2012-06-08 4 views
-5

У меня есть строка в одной строкерасщепление одна линия строки на несколько строк

String s = "<Item><productname>COOLER MASTER Hyper 212 EVO RR-212E-20PK-R2 
</productname><Price>$33.99</Price><ItemID>1000</ItemID></Item>"; 

внутри выше строки, после того, как «>» Новая линия должна начать и требуемая мощность хотел

<Item> 
<productname>COOLER MASTER Hyper 212 EVO RR-212E-20PK-R2 </productname> 
<Price>$33.99</Price> 
<ItemID>1000</ItemID> 
</Item> 
+0

еще лучше http://stackoverflow.com/a/2325407/169277, вам не нужно использовать регулярное выражение – ant

+3

-1 для не показывая любое усилие вашего собственного –

ответ

0

Другой вариант для разбора XML, а также использование параметр OutputKeys.INDENT класса Transformer для вывода формата XML.

Следующий пример

Source source = new StreamSource(new StringReader(s)); 

TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
transformerFactory.setAttribute("indent-number", 4); 

Transformer transformer = transformerFactory.newTransformer(); 
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 

StreamResult result = new StreamResult(new StringWriter()); 
transformer.transform(source, result); 

String xmlOutput = result.getWriter().toString(); 
System.out.println(xmlOutput); 

String xmlOutput = result.getWriter().toString(); 
System.out.println(xmlOutput); 

производит выход ниже

<?xml version="1.0" encoding="UTF-8"?> 
<Item> 
    <productname>COOLER MASTER Hyper 212 EVO RR-212E-20PK-R2</productname> 
    <Price>$33.99</Price> 
    <ItemID>1000</ItemID> 
</Item> 
2

Попробуйте это:

String newString = s.replaceAll("><", ">\n <"); 

веселит

+1

Не будет работать, поскольку открывающие и закрывающие теги будут на отдельных строках – GETah

+0

ОК, вы правы - тогда "><" =>"> \ n <" – peshkira

+0

Зачем использовать replaceAll? Вы не используете регулярное выражение , поэтому просто используйте repl ace() – Bohemian

1

вы, вероятно, лучше всего здесь с симпатичным принтером, так как вы действительно пытаетесь это сделать. W3C, Xerces, JDOM и т. Д. ... у всех есть возможности вывода, которые позволяют читать в xml и выплевывать их довольно печатными.

Вот JDOM Пример:

String input = "..."; 
Document document = new SAXBuilder().build(new ByteArrayInputStream(input.getBytes())); 
ByteArrayOutputStream pretty = new ByteArrayOutputStream(); 
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat()); 
outputter.output(document, pretty); 
System.out.println(pretty.toString()); 

Этот сайт имеет несколько хороших примеров того, как сделать это другими способами:

http://www.chipkillmar.net/2009/03/25/pretty-print-xml-from-a-dom/

Смежные вопросы