Comment puis-je vérifier si un nœud existe dans un fichier XML?
Comment puis-je vérifier si un nœud existe dans un fichier XML, et également de compter le nombre de nœuds?
J'ai un fichier XML pour un exemple:
<Employee>
<Emp>
<Name id="1"> A </Name>
<Name id="2"> C </Name>
<Name id="3"> D </Name>
</Emp>
</Employee>
- Quel langage de programmation voulez-vous la solution? Sauf si vous indiquez que, quelqu'un vote négatif pour cette question, comme il est incomplet.
Vous devez vous connecter pour publier un commentaire.
Avec linq 2 xml en c#:
Je suis en supposant que vous êtes à l'aide de XSL pour transformer ce document puis je suppose qu'une variable donnerait la meilleure fonctionnalité. Vous devriez utiliser ceci:
Cela vous donnera le nombre de nœuds de
Name
et vous pouvez le changer à tout ce que vous voulez. Évidemment, si c'est zéro alors il n'en existe pas, sinon c'est le nombre de.Si vous êtes à la programmation en Java il y a deux bibliothèques que vous devriez regarder.
JDOM - http://www.jdom.org/
DOM4J - http://www.dom4j.org/
Je regarderais Dom4j 2.0 maintenant, depuis qu'il est a obtenu le soutien des génériques, XPath, et a maintenant un peu mieux niveau élevé de soutien. Dom4j je pense a été forké le plus tôt jdom.
En soit, vous pouvez lire un fichier XML, URL, string etc, analyser et vérifier les nœuds
en seulement quelques lignes de code.
LINQ est grande. Mais juste au cas où vous êtes coincé sur un système .NET 2.x vous pourriez avoir à faire de la "vieille" (XPath) manière (où xmlFragment est votre chaîne XML ci-dessus):
Il y a au moins 4 nœuds, ici, en supposant que votre
</Emp>
est compensée par une ouverture<Emp>
tag:<Emp>
,<Name>
,ID
, et la chaîne" D "
seraient tous représentés comme des nœuds. Il n'est pas clair à partir de votre question si vous vraiment voulez compter tous de ces. Je suis également pas sûr de savoir si vous voulez déterminer l'existence d'un seul d'entre eux.En fin de compte, cependant, XPath est probablement ce que vous cherchez.
Comme une alternative à XPath, de nombreux langages XML DOM soutien vous permettra d'appeler une méthode sur un Document XML comme:
Votre code pour voir s'il existe ressemblerait à quelque chose comme ceci (écrit en pseudo-code):
XPath est bon, mais il est mieux adapté pour naviguer facilement d'un document XML dans intéressant et plus complexe. Ce code sera un peu plus simple que le code XPath.
Si vous utilisez transformation XSLT juste trythis:
getElementsByTagName["tagname"]
est également une méthode DOM qui peut être utilisé pour obtenir un nœud. Si le nœud ne correspond pas, la méthode renvoie null.