2012-11-10 22 views
5

Có ai có thể cung cấp ví dụ về việc sử dụng hàm XmlDocument.SelectSingleNodeNS cho WinRT không? Tôi không rõ thông số thứ hai là gì và tôi không thể tìm thấy ví dụ.Định dạng nào được mong đợi bởi tham số không gian tên trong SelectSingleNodeNS

public IXmlNode SelectSingleNodeNS(
    string xpath, 
    object namespaces 
) 

Contains a string that specifies the namespaces to use in XPath expressions when it is necessary to define new namespaces externally. Namespaces are defined in the XML style, as a space-separated list of namespace declaration attributes. You can use this property to set the default namespace as well.

+0

Không, không có hình phạt về hiệu suất. Hãy xem về vấn đề này [phản ứng] [1] [1]: http://stackoverflow.com/questions/256859/is-there-a-performance-difference-between-a -cho-loop-và-a-cho-mỗi-vòng lặp –

Trả lời

8

Tham số không gian tên rõ ràng chỉ là một chuỗi (mặc dù khai báo là đối tượng) mà phải chứa một tuyên bố không gian tên XML theo hình thức "xmlns: aliasname = 'namespace'" (phong cách XML). Ví dụ

xmlDocument.DocumentElement.SelectNodesNS("cb:person", 
    "xmlns:cb='http://www.addison-wesley.de/codebook'"); 

làm việc với một tài liệu XML như thế này:

<?xml version="1.0" encoding="utf-8" ?> 
<persons xmlns="http://www.addison-wesley.de/codebook"> 
    <person id="1000"> 
    <firstname>Zaphod</firstname> 
    <lastname>Beeblebrox</lastname> 
    <type>Alien</type> 
    </person> 
... 
</persons> 

Lưu ý rằng các bí danh (cb :) được sử dụng trong XPath.

Nếu không gian tên không có trong kiểu XML, bạn sẽ nhận được lỗi COM E_Fail khét tiếng.

Tài liệu hướng dẫn (nghèo) của SelectNodesNS cho biết: "Chứa một chuỗi chỉ định các không gian tên để sử dụng trong các biểu thức XPath khi cần thiết để xác định các không gian tên mới bên ngoài. Không gian tên được định nghĩa trong kiểu XML, thuộc tính khai báo không gian tên. Bạn cũng có thể sử dụng thuộc tính này để đặt không gian tên mặc định. "

Theo các không gian tên đó phải là một chuỗi và có thể chứa nhiều hơn một không gian tên XML (chưa thử). Vẫn còn câu hỏi là tại sao nó lại là một đối tượng.

+0

Tôi đọc MSDN của "chứa một chuỗi" và giả định tham số là một số loại đối tượng phức tạp, hoặc mảng, hoặc một cái gì đó, có một mục mảng hoặc tài sản của một số không có giấy tờ tên, đó là loại chuỗi, có URI không gian tên. Thật là một cơn ác mộng; đã cho tôi một giờ Googling để tìm ra những gì để làm với nó, nhưng câu trả lời xuất sắc của bạn là nó. Cảm ơn bạn. –

+0

Tôi có thể móc vào đây và hỏi bạn xem bạn có sử dụng hàm xpath 2.0 như xs: date với mã WinRT XML không? Tôi nhận được: '0x80004005 - Lỗi thời gian chạy JavaScript: Phương thức không xác định. // CatalogItem [@ code = '101'and -> xs: date (' 2011-09-22T00: 00: 00.000Z ') <- ge xs: date (@validFrom) và xs: date (' 2011-09-22T00: 00: 00.000Z ') le xs: date (@validTo)] ' – philk

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