-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>
4

3 に答える 3

2

これを試して:

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

乾杯

于 2012-06-08T12:40:50.967 に答える
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/

于 2012-06-08T13:05:59.997 に答える
0

もう1つのオプションは、XMLを解析し、 TransformerクラスのOutputKeys.INDENTオプションを使用して、フォーマットされた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>
于 2012-06-08T13:07:45.483 に答える