Voici un échantillon du XML je travaille avec (accessibles à partir spéciales tout wiki: Exporter les résultats/UnePage):XPathNavigator aide
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.4/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.4/ http://www.mediawiki.org/xml/export-0.4.xsd" version="0.4" xml:lang="en">
<siteinfo>
<sitename>Wikipedia</sitename>
<base>http://en.wikipedia.org/wiki/Main_Page</base>
<generator>MediaWiki 1.16wmf4</generator>
<case>first-letter</case>
<namespaces>
<namespace key="-2" case="first-letter">Media</namespace>
<namespace key="-1" case="first-letter">Special</namespace>
<namespace key="0" case="first-letter" />
...
</namespaces>
</siteinfo>
</mediawiki>
J'ai tout essayé, je peux penser à « sauter » directement au nœud siteinfo et itérer les résultats, et rien ne fonctionne à moins que je navigue manuellement à travers chaque nœud enfant de la racine vers le bas. J'ai essayé un million de variations des différents .Amener * et * .select méthodes et il semble que je suis juste frapper ma tête contre un mur, mais ma variante actuelle ressemble à ceci:
StringReader strr = new StringReader(_rawData);
XPathDocument xd = new XPathDocument(XmlReader.Create(strr, Bot.XmlReaderSettings));
XPathNavigator xn = xd.CreateNavigator();
XPathNodeIterator xni = xn.Select("/mediawiki/siteinfo");
foreach (XPathNavigator nav in xni)
Console.WriteLine(nav.LocalName);
Ce retourne pas résultats. Qu'est-ce que je fais mal?
Excellent, merci pour le code et le lien! – RobinHood70
+1 Bonne réponse. –
Pour ajouter des points bonus, est-il possible de déterminer l'url pour l'espace de nom via XPathNavigator, ou devrais-je simplement utiliser un Regex, puisque j'ai déjà la chaîne au préalable? – RobinHood70