Est-il possible d'ignorer les espaces de noms en c# lors de l'utilisation de xPath?
Je pourrais être donné de la façon suivante xml:
<?xml version="1.0" encoding="UTF-8"?>
<dc:video xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:title>
A vid with Pete
</dc:title>
<dc:description>
Petes vid
</dc:description>
<dc:contributor>
Pete
</dc:contributor>
<dc:subject>
Cat 2
</dc:subject>
</dc:video>
Ou:
<?xml version="1.0" encoding="UTF-8"?>
<video>
<title>
A vid with Pete
<title>
<description>
Petes vid
<description>
<contributor>
Pete
<contributor>
<subject>
Cat 2
<subject>
</video>
Im essayant d'accéder à un élément:
string title = xmlDocFromOneLan.SelectSingleNode(@"/video/title").InnerXml;
Mais avec document xml 1 il ne fonctionne pas en raison de l'espace de noms.
Est-il possible en c# pour ignorer l'espace de noms à l'aide de xpath? Je veux simplement sélectionnez le nœud, j'ai vraiment ne se soucient de l'espace de noms. (l'espace de noms peut être DC DN ou de la DCN, etc).
"/vidéo"
se lire:
<video></video>
or
<dc:video></video>
or
<dcn:video></video>
Vous pouvez utiliser l'espace de Noms = false sur XmlTextReader voir: stackoverflow.com/a/49361232/9516092
OriginalL'auteur Exitos | 2010-11-30
Vous devez vous connecter pour publier un commentaire.
Avec XPath 1.0 tout ce que vous pouvez faire est de
/*[local-name() = 'video']/*[local-name() = 'title']
. Avec XPath 2.0, vous pouvez utiliser un caractère générique/*:video/*:title
.Pete, XPath 1.0 et 2.0 sont des spécifications du W3C, vous pouvez trouver en ligne: w3.org/TR/xpath, w3.org/TR/xpath20. Microsoft ne prend en charge XPath 1.0, ils n'ont de la documentation sur que sur MSDN: msdn.microsoft.com/en-us/library/ms256115.aspx. XPath 2.0 est mis en œuvre par des tierces parties comme XQSharp xqsharp.com ou Saxon 9 saxon.sourceforge.net. Saxon a aussi une bonne documentation, l' *:foo syntaxe est décrite dans le saxonica.com/documentation/expressions/axissteps.xml.
OriginalL'auteur Martin Honnen