StAX XML ストリーム ライターを使用して XML ファイルを書き込んでいます。すべてのデータを 1 行に書き込みます。1 行ではなく、すべてのタグをインデントしたい。
12772 次
3 に答える
9
stax-utilsIndentingXMLStreamWriter
は、ジョブを実行するクラスを提供します。
XMLStreamWriter writer =
XMLOutputFactory.newInstance().createXMLStreamWriter(...);
writer = new IndentingXMLStreamWriter(writer);
...
于 2010-06-01T20:06:49.247 に答える
4
ここで回答: Java での StAX XML フォーマット
編集: stax-utils ( https://stax-utils.dev.java.net/ ) を使用した簡単な例 (リソースのクリーニングなし):
XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance();
FileOutputStream file = new FileOutputStream("d:/file.xml");
XMLEventWriter writer = xmlOutputFactory.createXMLEventWriter(file);
writer = new IndentingXMLEventWriter(writer);
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
writer.add(eventFactory.createStartDocument());
writer.add(eventFactory.createStartElement("", "", "a"));
writer.add(eventFactory.createStartElement("", "", "b"));
writer.add(eventFactory.createEndElement("", "", "b"));
writer.add(eventFactory.createEndElement("", "", "a"));
writer.add(eventFactory.createEndDocument());
これにより、以下が得られます。
<?xml version="1.0" encoding="UTF-8"?>
<a>
<b></b>
</a>
于 2010-06-01T11:12:09.033 に答える
1
StAX を介して OMElement (Axiom ライブラリ) をきれいに印刷する例:
OMElement mapArg = fac.createOMElement(name, elementNs);
mapArg.addAttribute("type", soapXml.getPrefix() + ":Map", xsi);
PropertyDescriptor[] properties = PropertyUtils.getPropertyDescriptors(value);
for (PropertyDescriptor property : properties) {
if (property.getName().equals("class"))
continue;
try {
mapArg.addChild(keyValue(property.getName(),
PropertyUtils.getProperty(value, property.getName())));
} catch (Exception e) {
}
}
final StringWriter stringWriter = new StringWriter();
try {
IndentingXMLStreamWriter xmlWriter = new IndentingXMLStreamWriter(StaxUtilsXMLOutputFactory.newInstance().createXMLStreamWriter(stringWriter));
mapArg.serialize(xmlWriter);
System.out.println(stringWriter.toString());
} catch (XMLStreamException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
于 2012-07-17T06:57:21.987 に答える