8
votes

GetElementyid () ne pas trouver la balise?

J'ai un fichier XML valide en cours de lecture par le service Windows Windows suivant. La balise en question (U1_000) est absolument dans l'élément:

XmlDocument doc = new XmlDocument();
doc.Load("C:\\j.xml");
XmlElement ee = doc.GetElementById("U1_000");

<book id="U1_000" category="web"> 


5 commentaires

Pouvez-vous publier votre document XML (ou un exemple)? Établissez-vous ce que l'identifiant est dans le doctype?


En fait, non pas dans le type doc - je vais examiner cela. Pensée spécifier l'identifiant était Enuf; (- merci


Nope, il n'y a rien de magie sur le nom d'attribut "ID". "XML: id", d'autre part ... w3.org/tr/xml- ID


Juste une supposition, mais sont sensibles aux identifiants d'élément?


Ils sont sensibles à la casse. Mais cette balise ici j'ai changé de l'original pour protéger l'innocent (et moi). Les cas d'origine correspondent.


3 Réponses :



6
votes

Si rien d'autre, utilisez peut-être XPath comme sauvegarde: xxx


1 commentaires

Merci Marc, j'irai cette route. Bonne idée. Merci à Anthony aussi.



4
votes

Vous avez besoin d'une DTD pour établir l'attribut sur les éléments de constituerait l'ID unique. Dans XML, il n'est pas automatiquement supposé que l'attribut ID doit être traité comme un identifiant d'élément unique.

en général "induite" XML "Undduded" Le getElementyID n'est pas très utile. La plupart des cas La structure du fichier XML étant traitée est comprise (par exemple, l'élément racine est appelé books contenant une série de book éléments), par conséquent un accès typique regarderait quelque chose comme ceci: - xxx

Si vous ne connaissez vraiment pas la structure XML et / ou le nom de la balise de l'élément, la recherche de force brute décrite dans la réponse MarcS fonctionnerait .


0 commentaires