我有一个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和受管设备名称
答案 0 :(得分:1)
解析此XML的两种可能方法是DOM4J和SAX。前者占用更多内存,并将完整的文档加载到Java对象结构中。使用SAX,您可以通过流式传输内容和&#34; listen&#34;来解析文件。对于要提取的元素。
因此,对于您的特定情况 - 只读取一些元素 - SAX可能是要走的路。
SAX的缺点是,它引发了一些只能使用特定的 - 并且正确(即在最佳情况下是预先验证的)XML文件的hackish解决方案。使用SAX时需要更仔细地编程。
(当然对于小型XML来说,如果对你来说更方便的话,用DOM4J完全加载它并不是一种耻辱;)