使用XPath/DOM/SAX解析XML
问题描述:
我有一个xml,我需要解析并从中获取值。但是,我不确定哪种解析方式对于这种类型的xml来说是最好的。我阅读了不同的方式,但不确定这是否是最好的方式。有人可以帮我写一个Java代码来解析这个XML使用最好的方法? 在此先感谢!使用XPath/DOM/SAX解析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>
我需要获取:
ManagementIpAddress,BFGCustomerId,BFGContractID和托管设备名称从这个XML解析这个XML的
答
两种可能的方式是DOM4J和SAX。前者的内存密集程度更高,并将完整的文档加载到Java对象结构中。使用SAX,您可以通过流式处理内容并“聆听”您要提取的元素来解析文件。
因此,对于您的具体情况 - 即只读几个元素 - SAX可能是要走的路。
SAX的缺点是,它会引入一些只适用于特定的并且正确(即在最好的情况下经过预先验证的)XML文件的黑客解决方案。使用SAX时,您需要更仔细地编程。
(当然小个XML它不是一个耻辱与DOM4J完全地加载它,如果这是你更方便;)
使用['元素#的getElementsByTagName()'](HTTP://文档。 oracle.com/javase/7/docs/api/org/w3c/dom/Element.html#getElementsByTagName%28java.lang.String%29)使用其名称获取标签元素。 – Braj 2014-10-07 08:02:08
你的问题不适合SO,因为它主要是基于意见的。您可以使用您提及的所有技术,以及您使用的所有技术都取决于您以及您的要求和技能。任何技术都应该为这种简单的XML做好准备。此外,我们不为您提供完整的代码 - 请先尝试一下,如果遇到问题,我们很乐意为您提供帮助。 – dirkk 2014-10-07 08:33:25
@dirkk - 如果您可以帮助,并感谢您宝贵的建议,我打破了我的头,直到这里!需要您的专家建议对上述查询请 – 2014-10-09 11:13:07