2009-09-24 19 views
9

私は.Net 2.0を使用しており、SelectSingleNodeから私のXmlDocumentに関係なく、名前空間に関係なく、間違った方向に音がする可能性があります。SelectSingleNode名前空間なし

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

具体的には、名前空間Provenance1は、クエリの時である番目の私が知っているdon'lので、nullに slipTypeを設定します。

答えて

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をサポートすることはほとんどありません。 –