2012-02-23 2 views
4

I가 XML 문서에로드 된 다음 문자열 :XmlDocument.SelectSingleNode 접두사 + xmlNamespace 문제

<?xml version='1.0' encoding='utf-8'?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <soapenv:Fault> 
     <faultcode>soapenv:Server</faultcode> 
     <faultstring>El cliente con los parámetros introducidos no existe./faultstring> 
     <detail> 
      <ns:ClienteWSDo29Exception xmlns:ns="http://services.do29.imq.es"> 
       <Do29Exception xmlns="http://services.do29.imq.es" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax211="http://model.do29.imq.es/xsd" xmlns:ax213="http://dto.do29.imq.es/xsd" xmlns:ax29="http://exception.do29.imq.es/xsd" xsi:type="ax29:Do29Exception"> 
        <ax29:classname>class es.imq.do29.dao.ClienteDaoImpl</ax29:classname> 
        <ax29:trace xsi:nil="true" /> 
        <ax29:previous xsi:nil="true" /> 
        <ax29:method>getCliente</ax29:method> 
        <ax29:id>1</ax29:id> 
        <ax29:message>El cliente con los parámetros introducidos no existe.</ax29:message> 
       </Do29Exception> 
      </ns:ClienteWSDo29Exception> 
     </detail> 
     </soapenv:Fault> 
    </soapenv:Body> 
</soapenv:Envelope> 

그리고 내가 노력 XML의 네임 스페이스의 경우 다음

XmlDocument xmldocu = new XmlDocument(); 
xmldocu.LoadXml(xml); 
XmlNamespaceManager namespaces = new XmlNamespaceManager(xmldocu.NameTable); 
namespaces.AddNamespace("ax29", "http://services.do29.imq.es"); 
XmlNode nodemsgx = xmldocu.SelectSingleNode("//message", namespaces); 
XmlNode nodemsg = xmldocu.SelectSingleNode("//ax29:message", namespaces); 

그러나 nodemsgx 및 nodemsg는 null입니다. S 올바른 방법은 무엇입니까? 내가 사용 // 메시지를 내가 그 유형이 아닌이 노드에 특정 경로의 노드를 얻으려면 렸기 때문에 ... XML 문서의

+0

제목 앞에 "C#"을 붙이지 마십시오. 그것이 바로 태그가있는 것입니다. –

답변

7

ax29 접두사는 "http://exception.do29.imq.es/xsd" 네임 스페이스에 "http://services.do29.imq.es"을하지 설정됩니다.

이 시도 :

우리가 있습니다 END_STRONG_1에 포함 된 내용을 모르겠지만, 나는 그것이 xmldocu을 포함 같은데요 때문에 우리를 위해 말할 하드
namespaces.AddNamespace("ax29", "http://exception.do29.imq.es/xsd"); 
XmlNode nodemsg = xmldocu.SelectSingleNode("//ax29:message", namespaces); 
+0

고마워요. 네가 너무 못 박 았어. (네임 스페이스가 너무 많아서 내가 오도되었다 ...) – VSP

0

?

문서에서 다른 요소를 가져다 봤습니까?

않습니다 XmlNode nodemsg = xmldocu.SelectSingleNode ("detail // ax29 : message"); 뭐라도 굴니까?

+0

미안하다. S – VSP