2009-09-24 7 views
9

.Net 2.0을 사용하고 있는데 XmlDocument에서 SelectSingleNode, 내 XmlDocument에 관계없이 네임 스페이스에 관계없이 잘못된 것으로 들릴 수 있습니다. SelectSingleNode 네임 스페이스가 없음

네임 스페이스 Provenance1 쿼리시에 번째 내가 아는 뛰기 - 이후 null로 slipType을 설정합니다

XmlElement slipType = (XmlElement)document.SelectSingleNode("//Provenance1"); 

구체적으로합니다.

답변

22

당신은 요소의 local-name을 확인하고 다음 XPath 식에 네임 스페이스를 무시할 수 있습니다.이은을 던졌습니다

//*[local-name()='Provenance1'] 
+0

Microsoft의 소위 프로그래머가 가장 단순한 것을 복잡하게 만드는 또 다른 예입니다. – TomeeNS

0

시도 :

XmlElement slipType = (XmlElement)document.SelectSingleNode("//*:Provenance1"); 

또는 : .NET 만의 XPath 1.0 사용하는 반면

속성
XmlElement slipType = (XmlElement)document.SelectSingleNode("//@*:Provenance1"); 

...

불행하게도,이 구성은, XPath를 2.0으로 작동합니다. 내가 실수로 2.0 파서 코드 위의 테스트, 그래서 그것은 작동하지 않습니다)

+0

XPathException // * : Provenance1에 유효하지 않은 토큰이 있습니다. –

+0

.NET 3.5에서이 파일을 충돌 테스트했습니다. 그러나 유효한 XPath 구조입니다. 불행히도 XPath 2.0에 대해서는 테스트를 거쳤습니다. 그러나 .NET은 XPath 1.0 만 사용하고 .NET은 2.0을 지원할 것 같지 않습니다. –

관련 문제