gpt4 book ai didi

java - 使用 XPath/DOM/SAX 解析 XML

转载 作者:行者123 更新时间:2023-12-01 12:27:13 25 4
gpt4 key购买 nike

我有一个 xml,需要解析它并从中获取值。但是,我不确定哪种解析方式最适合这种类型的 xml。我读到了不同的方法,但不确定这是否是最好的方法。有人可以帮我编写一个java代码来使用最好的方法解析这个xml吗?提前致谢!

这是 XML:

<managementDomain>
<mtosi:additionalInfo>
<mtosi:nvs>
<stru:attributeName>Managed Device Name</stru:attributeName>
<stru:attributeValue>
<nonc:value>al-dcdc-numr-phe-eu</nonc:value>
</stru:attributeValue>
</mtosi:nvs>
<mtosi:nvs>
<stru:attributeName>NMDBF</stru:attributeName>
<stru:attributeValue>
<nonc:value>Y</nonc:value>
</stru:attributeValue>
</mtosi:nvs>
<mtosi:nvs>
<stru:attributeName>BFGCustrID</stru:attributeName>
<stru:attributeValue>
<nonc:value>3444</nonc:value>
</stru:attributeValue>
</mtosi:nvs>
<mtosi:nvs>
<stru:attributeName>BFGContractID</stru:attributeName>
<stru:attributeValue>
<nonc:value>12331</nonc:value>
</stru:attributeValue>
</mtosi:nvs>
</mtosi:additionalInfo>
<mtosi:mdVendorExtensions>
<mtosi:tmf854Version/>
<mtosi:extVersion/>
<mtosi:extAuthor/>
</mtosi:mdVendorExtensions>
<mtosi:managedElement>
<mtosi:manufacturer>
<nonc:ossValue>CISCO</nonc:ossValue>
</mtosi:manufacturer>
<mtosi:productName>
<nonc:value>CISCO2951</nonc:value>
</mtosi:productName>
<mtosi:meVendorExtensions>
<mtosi:tmf854Version/>
<mtosi:extVersion/>
<mtosi:extAuthor/>
<mtosi:managementIPAddress>
<mtosi:ipValue>
<nonc:value>10.32.22.49</nonc:value>
</mtosi:ipValue>
</mtosi:managementIPAddress>
</mtosi:meVendorExtensions>
</mtosi:managedElement>
</managementDomain>

我需要获取:

此 xml 中的 ManagementIpAddress 、 BFGCustomerId 、 BFGContractID 和托管设备名称

最佳答案

解析此 XML 的两种可能方法是 DOM4J 和 SAX。前者内存消耗更大,并将完整文档加载到 Java 对象结构中。使用 SAX,您可以通过流式传输内容并“监听”要提取的元素来解析文件。

因此,对于您的具体情况 - 即仅读取一些元素 - SAX 可能是最佳选择。

SAX 的缺点是,它会引入一些只适用于特定且正确(即在最好的情况下预先验证的)XML 文件的黑客解决方案。使用 SAX 时需要更加仔细地编程。

(当然,对于小型 XML,如果这对您来说更方便的话,使用 DOM4J 完全加载它并不是什么耻辱;)

关于java - 使用 XPath/DOM/SAX 解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26231137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com