如何在此xml文件上使用SAX
作者:互联网
我有一个XML文件,我试图用Sax解析(这是我第一次这样做).我已经研究过如何实现解析器,这一切都有意义,但我不确定解决这个问题的最佳方法.
我有分散的相关数据(两个事实由FactKey关联).在下面的示例中,Foo的值为5.34.
Sax在每个新元素上调用StartElement(),因此这是对Facts的一次调用和对Value的一次调用….所以我的问题是:我是否必须从Facts元素存储FactKey,以便我可以将它与Value元素相关联在下一次传球中,或萨克斯有没有办法自动完成?
是否有任何设施用于将两个不同的事实与相同的FactKey相关联,也许我使用DOM而不是Sax?或者这只是一厢情愿的想法,我实际上只需要维护一个多图或其他东西.
...
<Facts FactKey="2832154551" FieldId="73250">
<Value xsi:type="xs:double">5.3499999</Value>
</Facts>
...
<Facts FactKey="2832154551" FieldId="410288">
<Value xsi:type="xs:string">Foo</Value>
</Facts>
解决方法:
对于您的第一个问题:是的,您必须维护解析器使用的任何上下文(即,您必须跟踪您在Facts元素中/不在事实元素中的事实).
至于按键关联不同的Fact元素,是的,有警告.您可以将文件加载到DOM中(假设您有足够的内存),然后使用XPath提取具有特定FactKey的所有元素.
//Facts[@FactKey="2832154551"]
但是,如果您想要读取文件并使用相同的键累积Facts,那么多图是您最好的选择. DOM解析器可能仍然有用,因为您可以使用将字符串键与Element值相关联的多图.
标签:java,xml,sax,saxparser 来源: https://codeday.me/bug/20190626/1294099.html