как получить значения атрибутов из xml-документа в c #, не зная полей или чего-либо еще?

#c# #.net

#c# #.net

Вопрос:

это мой XML-документ

 <Names>
    <Name1 type="M" name = "John">
    </Name1>
</Names>
  

и я хочу проанализировать документ, чтобы получить Name1, type, его значение, name и его значение

Комментарии:

1. не зная поля? вы имели в виду, что без запроса для узла (Name1) вам нужно присвоить значение (тип, имя)? или вы имеете в виду все внутренние узлы, не зная имени? т. Е. получить все узлы внутри родительского узла?

Ответ №1:

Используйте класс XmlDocument и используйте его свойство childNodes / Attributes.

 var xml = "<Names><Name type="M" name="John"></Name></Names>";
var doc = new XmlDocument();
doc.LoadXml(xml);

var nodes = doc.DocumentElement.ChildNodes;
foreach (XmlNode node in nodes)
{
    Console.WriteLine(node.Name   " : "   node.Value);
    foreach (XmlAttribute attr in node.Attributes)
    {
        Console.WriteLine(attr.Name   " : "   attr.Value);
    }
}
  

Вы можете продолжить изучение отсюда, например, метод getElementsByTagName или рекурсивно исследовать дочерние узлы..

Комментарии:

1. привет @AkhilSivanandan! пожалуйста, опубликуйте свой ответ с пометкой «Обновить» в вашем существующем сообщении! чтобы другие люди тоже знали это!

Ответ №2:

 string xml = @"
    <parent>
      <child>
        <nested />
      </child>
      <child>
        <other>
        </other>
      </child>
    </parent>
    ";

  XmlReader rdr = XmlReader.Create(new System.IO.StringReader(xml));
  while (rdr.Read())
  {
    if (rdr.NodeType == XmlNodeType.Element)
    {
      Console.WriteLine(rdr.LocalName);
    }
  }
  

Результатом вышесказанного будет

 parent
child
nested
child
other
  

Комментарии:

1. эй, абишек, я не это ищу.