如何读取xml节点标题和它的值

本文关键字:标题 节点 xml 何读取 读取 | 更新日期: 2023-09-27 17:49:38

我有以下xml,并希望解析它并读取每个node valuenode title。我能读懂value,但不能读懂node title。我使用reader.Name,但它总是返回empty string。如何读取节点标题?

string ExceptionDetails="<names><FirstName>John</FirstName><SecondName>White</SecondName></names>";
using (XmlReader reader = XmlReader.Create(new StringReader(ExceptionDetails)))
{
    while (reader.Read())
    {
       if (reader.NodeType == XmlNodeType.Element)
       {
          while (reader.Read())
          {
             if (reader.HasValue)
             {               
                sb.Append()+":"; //Read tag title
                sb.Append(reader.Value); sb.Append("<br/>");                      
             }
          }
       }
    }
}
结果:

FirstName:John
SecondName:white

如何读取xml节点标题和它的值

您可以使用XmlReader。获取当前节点的名称。对于元素,这是标记名。为了记住文本之前的最后一个标记名称,需要在将其添加到StringBuilder之前将其存储在一个变量中:

using System;
using System.Xml;
using System.IO;
using System.Text;
public class Test
{
    public static void Main()
    {
        StringBuilder sb = new StringBuilder();
        string ExceptionDetails="<names><FirstName>John</FirstName><SecondName>White</SecondName></names>";
        using (XmlReader reader = XmlReader.Create(new StringReader(ExceptionDetails)))
        {
            string tagName = string.Empty;
            while (reader.Read())
            {
               if (reader.NodeType == XmlNodeType.Element)
                   tagName = reader.Name;
               else if (reader.NodeType == XmlNodeType.Text)
               {               
                    sb.Append(tagName);
                    sb.Append(":"); //Read tag title
                    sb.Append(reader.Value); sb.Append("<br/>");                      
               }
            }
        }
        Console.WriteLine(sb.ToString());
    }
}

   XDocument doc = XDocument.Load(Your XML);
    var elements = doc.Descendants( "names" );
    Dictionary<string, string> keyValues = new Dictionary<string, string>();
    for (int i = 0; i < elements.Count; i++)
    {
       string key = elements[i].Attributes["key"].Value.ToString();
       string value = elements[i].Attributes["value"].Value.ToString();
       keyValues.Add(key,value);
    }