2011-05-15 4 views
0

문제는 xmlns 특성으로 ServiceDocument입니다.요소에 붙어있는 특성으로 인해 XML을 구문 분석 할 수 없음

--- 미리 지정된 XML

System.Xml.XmlDocument xmlDoc = new XmlDocument(); 
    xmlDoc.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?> 
        <ServiceDocument 
         xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" 
         xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" 
        > 
        <BaseUri> 
         http://xxxx.xxxxx.net/xxx.1/ 
        </BaseUri> 
        <ProfilesLink> 
        http://adf.apis.dds.net/af.1/ 
       </ProfilesLink> 
       <SignedInUser> 
         <Cid> 
          4433sfsdfgd 
         </Cid> 
         <Uri> 
          http://fd.apis.afdafd.net/V4.1/cid-xxxxx/adad 
         </Uri> 
       </SignedInUser> 
       <StatusMessageLink> 
         http://psm.adfa.afd.net/dfa.1/ 
       </StatusMessageLink> 
      </ServiceDocument>" 
      ); 
// Response.Write(xmlDoc.InnerXml); 

- // 구문 분석 XML 문제는 다음과 같습니다 ** 당신은 XMLNamespaceManager를 사용하여 네임 스페이스에 대한 짧은 별칭을 할당해야

Response.Write(xmlDoc.SelectSingleNode("/ServiceDocument/BaseUri").InnerXml); 
+1

은 "속성은"기본 네임 스페이스 선언이다. Google은 "XPath 기본 네임 스페이스"를 선택하면 수많은 답변을 찾을 수 있습니다. –

답변

6

.

예를 들어 this page을 참조하십시오. 그래서

, 당신의 문제를 해결하기 위해 :

var xmlNamespaceManager = new XmlNamespaceManager(xmlDoc.NameTable); 
xmlNamespaceManager.AddNamespace("ds", "http://schemas.microsoft.com/ado/2007/08/dataservices"); 
var result = xmlDoc.SelectNodes("/ds:ServiceDocument/ds:BaseUri", xmlNamespaceManager); 
관련 문제