2009-09-24 18 views
9

Tôi đang sử dụng .Net 2.0 và cần phải SelectSingleNode từ số XmlDocument của mình bất kể không gian tên, do sai hướng dẫn đến mức có thể.SelectSingleNode không có vùng tên

phải được cụ thể

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

sẽ thiết lập slipType null kể từ khi tôi biết don'l thứ namespace Provenance1 là ở tại thời điểm truy vấn.

Trả lời

22

Bạn có thể kiểm tra local-name của nguyên tố này và bỏ qua không gian tên với biểu thức XPath sau:.

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

Một ví dụ khác về việc làm phức tạp những điều đơn giản nhất của những người lập trình từ Microsoft. – TomeeNS

0

Hãy thử:

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

Hoặc:

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

cho các thuộc tính ...

Thật không may, xây dựng điều này sẽ chỉ làm việc với XPath 2.0, trong khi NET chỉ sử dụng XPath 1.0. Tôi vô tình thử nghiệm trên mã với một phân tích cú pháp 2.0, vì vậy nó không hoạt động)

+0

này ném một XPathException // *: Provenance1 có mã thông báo không hợp lệ. –

+0

Tôi đã thử nghiệm nó với .NET 3.5, nơi nó cũng bị hỏng. Tuy nhiên, nó là một cấu trúc XPath hợp lệ. Thật không may cho XPath 2.0, mà tôi đã thử nghiệm. Nhưng .NET chỉ sử dụng XPath 1.0 và không chắc .NET sẽ hỗ trợ 2.0 ... –

Các vấn đề liên quan