2012-11-10 10 views
5

Czy ktoś może podać przykład użycia funkcji WinRT dla funkcji XmlDocument.SelectSingleNodeNS? Nie jestem pewien, czego oczekuje drugi parametr i nie mogę znaleźć przykładu.Jaki format jest oczekiwany przez parametr przestrzeni nazw w 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

Nie, nie ma kary za wydajność. Spójrz na ten [odpowiedzi] [1] [1]: http://stackoverflow.com/questions/256859/is-there-a-performance-difference-between-a -for-loop-and-a-for-each-loop –

Odpowiedz

8

Parametr nazw jest oczywiście tylko ciąg (chociaż zadeklarowane jako obiekt), który musi zawierać deklarację przestrzeni nazw XML w postaci „xmlns: aliasName = 'nazw” (styl XML). Dla przykładu

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

współpracuje z dokumentu XML tak:

<?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> 

Zauważ, że alias (cb :) użyto w XPath.

Jeśli przestrzeń nazw nie jest w stylu XML, pojawia się niesławny błąd COM E_Fail.

(słaba) dokumentacja SelectNodesNS mówi: "Zawiera ciąg znaków określający przestrzenie nazw do użycia w wyrażeniach XPath, gdy konieczne jest zewnętrzne definiowanie nowych przestrzeni nazw Przestrzenie nazw są zdefiniowane w stylu XML, jako lista oddzielona spacjami. atrybutów deklaracji przestrzeni nazw. Możesz użyć tej właściwości, aby ustawić domyślny obszar nazw. "

Zgodnie z tym, że przestrzenie nazw muszą być ciągiem i mogą zawierać więcej niż jedną przestrzeń nazw XML (jeszcze tego nie próbowałem). Wciąż pytanie jest otwarte, dlaczego jest przedmiotem.

+0

Przeczytałem MSDN "zawiera ciąg" i przyjęto, że parametr był jakimś złożonym obiektem, tablicą lub czymś, co miało element tablicy lub własność niektórych nieudokumentowanych nazwa, która była typu ciąg, który miał URI przestrzeni nazw. Co za koszmar; zabrał mi godzinę Googlingu, aby dowiedzieć się, co z nią zrobić, ale twoja doskonała odpowiedź była. Dziękuję Ci. –

+0

Czy mogę podłączyć tutaj i zapytać, czy udało ci się użyć funkcji xpath 2.0 jak xs: date with WinRT XML code? Otrzymuję: '0x80004005 - Błąd środowiska wykonawczego JavaScript: nieznana metoda. // CatalogItem [@ code = '101' i -> xs: date ('2011-09-22T00: 00: 00.000Z') <- ge xs: date (@validFrom) i xs: date (' 2011-09-22T00: 00: 00.000Z ') le xs: date (@validTo)] ' – philk

Powiązane problemy