J'essaie d'utiliser XPath pour sélectionner les éléments qui ont une facette avec Location
valeurs, mais actuellement mes tentatives même de simplement sélectionner tous les éléments échouent: Le système signale heureusement qu'il a trouvé 0 articles, puis renvoie (à la place les noeuds doivent être traités par une boucle foreach
). J'apprécierais l'aide soit en faisant ma requête originale ou juste en faisant fonctionner XPath du tout.C# XPath ne trouve rien
XML
<?xml version="1.0" encoding="UTF-8" ?>
<Collection Name="My Collection" SchemaVersion="1.0" xmlns="http://schemas.microsoft.com/collection/metadata/2009" xmlns:p="http://schemas.microsoft.com/livelabs/pivot/collection/2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FacetCategories>
<FacetCategory Name="Current Address" Type="Location"/>
<FacetCategory Name="Previous Addresses" Type="Location" />
</FacetCategories>
<Items>
<Item Id="1" Name="John Doe">
<Facets>
<Facet Name="Current Address">
<Location Value="101 America Rd, A Dorm Rm 000, Chapel Hill, NC 27514" />
</Facet>
<Facet Name="Previous Addresses">
<Location Value="123 Anywhere Ln, Darien, CT 06820" />
<Location Value="000 Foobar Rd, Cary, NC 27519" />
</Facet>
</Facets>
</Item>
</Items>
</Collection>
C#
public void countItems(string fileName)
{
XmlDocument document = new XmlDocument();
document.Load(fileName);
XmlNode root = document.DocumentElement;
XmlNodeList xnl = root.SelectNodes("//Item");
Console.WriteLine(String.Format("Found {0} items" , xnl.Count));
}
Il y a plus à la méthode que cela, mais puisque c'est tout ce qui se fait courir je suppose que le problème se trouve ici. Appeler root.ChildNodes
renvoie exactement FacetCategories
et Items
, donc je suis complètement à perte.
Merci pour votre aide!