J'ai quelques fichiers XML contenant des commentaires au-dessus des nœuds. Lorsque je lis le fichier dans, dans le cadre du processus, je voudrais obtenir le commentaire aussi. Je sais que vous pouvez écrire un commentaire au fichier à l'aide de xmlcomment em>, mais je ne sais pas comment les lire. Mon XML ressemble à ceci: P> <Objects>
<!--Comment about node-->
<GUID-bf2401c0-ef5e-4d20-9d20-a2451a199362>
<info job="SAVE" person="Joe" />
<info job="SAVE" person="Sally" />
</GUID-bf2401c0-ef5e-4d20-9d20-a2451a199362>
<!--Another Comment about node-->
<GUID-bf2401c0-ef5e-4d20-9d20-a5844113284112>
<info job="SAVE" person="John" />
<info job="SAVE" person="Julie" />
</GUID-bf2401c0-ef5e-4d20-9d20-a5844113284112>
6 Réponses :
Ils font partie des nœuds enfants du nœud contenant comme tous les autres nœuds: http://msdn.microsoft.com/en-us/library/system.xml.xmlComment.aspx p>
Essayez ceci:
XmlReader xmlRdr = XmlReader.Create("Test.XML");
// Parse the file
while (xmlRdr.Read())
{
switch (xmlRdr.NodeType)
{
case XmlNodeType.Element:
// You may need to capture the last element to provide a context
// for any comments you come across... so copy xmlRdr.Name, etc.
break;
case XmlNodeType.Comment:
// Do something with xmlRdr.value
FAUX est la valeur par défaut pour Ignorecomments code>
@ V4Vend: Même dans cette réponse et en code réel, c'est une bonne idée de la définir explicitement.
A travaillé un régal, je n'ai jamais réalisé que les nœuds avaient des types comme ça.
Qu'est-ce que le commentaire est placé en dehors de l'élément racine, dans ce cas
J'ai enregistré votre XML dans un fichier, voici l'échantillon de code.
XmlDocument document = new XmlDocument();
document.Load("test.xml");
foreach (XmlComment comment in document.SelectNodes("//comment()"))
{
Console.WriteLine("Comment: \"{0}\".", comment.Value);
}
à l'aide de system.xml.linq:
Certains échantillons de code sur la manière d'accéder aux commentaires espèrent que cela aide
using System;
using System.IO;
using System.Xml;
public class Sample {
public static void Main() {
XmlDocument doc = new XmlDocument();
doc.LoadXml(@"<Objects><!--Comment about node--><othernode/><!--Some more comment--></Objects>");
XmlNode root = doc.FirstChild;
if (root.HasChildNodes)
{
for (int i=0; i<root.ChildNodes.Count; i++)
{
if( root.ChildNodes[i] is XmlComment)
Console.WriteLine(root.ChildNodes[i].InnerText);
}
}
}
}
Je sais que la question est très ancienne, mais hier, j'ai eu le même problème. Alors voici ma solution: peut-être que cela aide quelqu'un p> p>
Détail manquant important: Quel est le code que vous utilisez pour "lire le fichier dans"?
Bien .. comment allez-vous lire ceci
Vérifiez Cette réponse a >