2015-01-12 4 views
0

문자열 XML에 저장된 XML에서 특정 값을로드하려고합니다. 그러나 어떤 이유로 노드가 선택되지 않습니다. 내가 가져 오기 할문자열 XML에서 노드 값을 가져올 수 없습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<megaServiceResponse xmlns="http://www.asbcsda/ms"> 
    <serviceDetails> 
     <site> 
      <siteAccountNumber>123</siteAccountNumber> 
      <serviceAddress> 
       <streetAddress>abc</streetAddress> 
       <city>Rockaway</city> 
       <state>NJ</state> 
       <zip>07866</zip> 
      </serviceAddress> 
      <line> 
       <lsn>279542</lsn> 
       <billcode>NCB02HW51C</billcode> 
       <siteAccountId>2230066</siteAccountId> 
       <backupParentLsn>0</backupParentLsn> 
       <dateConnected>2012-06-07 07:29:33.0</dateConnected> 
       <lineType>Dedicated Lines</lineType> 
       <orderType>ESA</orderType> 
       <primaryOrBackupLine>No Backup/Failover LSN</primaryOrBackupLine> 
       <mplsOrdered>false</mplsOrdered> 
       <ipSecOrdered>false</ipSecOrdered> 
       <failoverOrdered>false</failoverOrdered> 
       <dbuServiceOrdered>false</dbuServiceOrdered> 
       <lsnClli>DNVLNJRK</lsnClli> 
       <serviceProducts> 
        <serviceProduct> 
         <serviceType>Enhanced IP</serviceType> 
         <productName>/29 IP Address Block (5 useable)</productName> 
         <quantity>1</quantity> 
        </serviceProduct> 
        <serviceProduct> 
         <serviceType>Enterprise</serviceType> 
         <productName>T1 1.5 (ESA8)</productName> 
         <quantity>1</quantity> 
        </serviceProduct> 
       </serviceProducts> 
      </line> 
     </site> 
    </serviceDetails> 
</megaServiceResponse> 

노드는/megaServiceResponse/serviceDetails/사이트 내가

  XmlDocument doc = new XmlDocument(); 
     doc.LoadXml(json); //json is an XML string 
     var nodes = doc.SelectNodes("/megaServiceResponse/serviceDetails/site/line/serviceProducts/serviceProduct"); 

위의 라인이 null을 반환하는 다음 코드를 사용하고

/라인/serviceProducts/serviceProduct 마디.

답변

2

XML에 네임 스페이스가 있기 때문입니다. 그래서 당신은 그것을 제거하고 코드를 사용하여, 다음과 같이 중 하나

<megaServiceResponse> 
    <serviceDetails> 

혹은 다음과 같이, 노드를 선택하기 전에 선언해야합니다

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(xml); 

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); 
nsmgr.AddNamespace("mp", "http://www.abcdesg.com/ms"); 

var nodes = doc.SelectNodes("//mp:megaServiceResponse/mp:serviceDetails/mp:site/mp:line/mp:serviceProducts/mp:serviceProduct", nsmgr); 
관련 문제