2009-09-24 23 views
9

Kullanıyorum. Net 2.0 ve SelectSingleNode benim XmlDocument ad alanı ne olursa olsun, yanlış gibi başlı yanlış. SelectSingleName ad alanı olmadan

ad Provenance1 sorgusu sırasında olduğunu inci bildiğim don'l beri null slipType ayarlayacaktır

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

spesifik olması.

cevap

22

Sen elemanın local-name kontrol edin ve aşağıdaki XPath ifadesi ile ad göz ardı edebilirsiniz. Bu, bir atar

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

Microsoft'un sözde programcıları tarafından en basit şeyleri karmaşık hale getirmenin bir başka örneği. – TomeeNS

0

Dene:

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

Veya: NET sadece XPath 1.0 kullanırken

öznitelikler için
XmlElement slipType = (XmlElement)document.SelectSingleNode("//@*:Provenance1"); 

...

Maalesef bu yapı sadece, XPath 2.0 ile çalışacak. Ben kaza 2,0 ayrıştırıcı ile kod yukarıda test, bu yüzden çalışmıyor)

+0

XPathException // *: Provenance1'de geçersiz bir belirteç var. –

+0

Bunu da .NET 3.5 ile test ettim, burada da düştü. Ancak, geçerli bir XPath yapısıdır. Ne yazık ki test ettiğim XPath 2.0 için. Ancak, .NET yalnızca XPath 1.0 kullanıyor ve .NET'in 2.0 desteği ... –