用Java处理XML数据
作者:网络转载 发布时间:[ 2014/1/14 9:46:00 ] 推荐标签:Java XML
拿我这个分割XML的小栗子来说:
XMLInputFactory xif = XMLInputFactory.newInstance();
XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("input.xml")); // 用Stax读取XML
xsr.nextTag(); // Advance to statements element
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.setParameter(OutputKeys.OMIT_XML_DECLARATION, "no");
t.setParameter(OutputKeys.STANDALONE, "yes");
long i = 0;
String action = null;
while (xsr.hasNext()) {
if (xsr.next() == XMLStreamConstants.START_ELEMENT) {
if ("ContentItem".equals(xsr.getLocalName())) {
action = getAttributeValue(xsr, "action");
} else if ("Data".equals(xsr.getLocalName())) {
File file = new File("out/" + action + i++ + ".xml");
t.transform(new StAXSource(xsr), new StreamResult(file)); // 流式变换,走你~
// DOMResult dr = new DOMResult(); // 如果你要Dom格式的,releaseMe
// t.transform(new StAXSource(xsr), dr);
}
}
}
知道变态的是什么吗?需要解析XML整个内容到String里面,不单单是数据,是整个XML标签和数据。其实是ouputStream转String的过程:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
t.transform(new StAXSource(xsr), new StreamResult(baos));
String subXMLStr = baos.toString();
好了,蟹八件和螃蟹都上齐了,可以开吃了。

sales@spasvo.com