2014-10-07 4 views
0

XML에서 값을 파싱하고 가져 오는 데 필요한 XML이 있습니다. 그러나, 어떤 유형의 구문 분석이이 유형의 xml에 가장 좋을지 확실하지 않습니다. 나는 다른 방법들에 대해서 읽었지 만 그게 최선의 방법인지 확신 할 수 없다. 누군가가 최선의 접근 방식을 사용하여이 xml을 파싱하는 Java 코드를 작성하도록 도와 줄 수 있습니까? 미리 감사드립니다. 내가 가져올 필요가XPath/DOM/SAX를 사용하여 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의이 XML을 구문 분석

+0

사용 ['요소 # getElementsByTagName()'(HTTP;

(이 당신을 위해 더 편리 경우 작은 XMLS와 물론 그것은 DOM4J과 completly를로드하는 수치 아니다). oracle.com/javase/7/docs/api/org/w3c/dom/Element.html#getElementsByTagName%28java.lang.String%29)를 사용하여 이름을 사용하여 태그 요소를 가져옵니다. – Braj

+0

주로 의견을 기반으로하므로 질문에 적합하지 않습니다. 언급 한 모든 기술을 사용할 수 있으며 사용하는 기술은 귀하와 귀하의 요구 사항 및 기술에 달려 있습니다. 모든 기술은 그러한 단순한 XML을 위해해야합니다. 또한, 우리는 완전한 코드를 제공하지 않습니다 - 먼저 직접 시도해보십시오. 문제가 생기면 도와 드리겠습니다. – dirkk

+0

@dirkk - 도움을 주셔서 감사 드리며 소중한 의견을 보내 주시면 여기서 머리를 터트렸다. 위 쿼리에 대한 전문가의 조언이 필요합니다. –

답변

1

두 가지 방법이 DOM4J있는이 XML에서

ManagementIpAddress, BFGCustomerId, BFGContractID 및 관리 장치 이름 및 색소폰. 전자는 메모리 집약적이며 전체 문서를 Java 객체 구조로로드합니다. SAX를 사용하면 내용을 스트리밍하고 추출하려는 요소를 "듣기"로 파싱 할 수 있습니다.

특정 경우 (몇 가지 요소 만 읽음)로 SAX가 갈 수 있습니다.

SAX의 단점은 구체적이고 정확한 (즉, 가장 좋은 경우 사전 검증 된) XML 파일에서만 작동하는 일부 해킹 해결책을 제시한다는 것입니다. SAX를 사용할 때는 좀 더주의 깊게 programm해야합니다. // 문서 :