Noa*_*oam 11 java xml stax dom
我需要阅读几个大的(200Mb-500Mb)XML文件,所以我想使用StaX.我的系统有两个模块 - 一个用于读取文件(使用StaX); 另一个模块('parser'模块)假设获取该XML的单个条目并使用DOM解析它.我的XML文件没有特定的结构 - 所以我不能使用JaxB.如何将"解析器"模块传递给我想要解析的特定条目?例如:
<Items>
<Item>
<name> .... </name>
<price> ... </price>
</Item>
<Item>
<name> .... </name>
<price> ... </price>
</Item>
</Items>
Run Code Online (Sandbox Code Playgroud)
我想使用StaX来解析该文件 - 但每个'item'条目都将传递给'parser'模块.
编辑:
经过多一点阅读 - 我想我需要一个使用流读取XML文件的库 - 但是使用DOM解析每个条目.有这样的事吗?
bdo*_*han 18
您可以使用StAX(javax.xml.stream)解析器并将javax.xml.transform每个节转换()到DOM节点(org.w3c.dom):
import java.io.*;
import javax.xml.stream.*;
import javax.xml.transform.*;
import javax.xml.transform.stax.StAXSource;
import javax.xml.transform.dom.DOMResult;
import org.w3c.dom.*
public class Demo {
public static void main(String[] args) throws Exception {
XMLInputFactory xif = XMLInputFactory.newInstance();
XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("input.xml"));
xsr.nextTag(); // Advance to statements element
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
while(xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
DOMResult result = new DOMResult();
t.transform(new StAXSource(xsr), result);
Node domNode = result.getNode();
}
}
}
Run Code Online (Sandbox Code Playgroud)
另见:
| 归档时间: |
|
| 查看次数: |
9454 次 |
| 最近记录: |