当前位置 : 主页 > 网页制作 > xml >

如何在此xml文件上使用SAX

来源:互联网 收集:自由互联 发布时间:2021-06-13
我有一个 XML文件,我试图用Sax解析(这是我第一次这样做).我已经研究过如何实现解析器,这一切都有意义,但我不确定解决这个问题的最佳方法. 我有分散的相关数据(两个事实由FactKey关联
我有一个 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值相关联的多图.

网友评论