如何读取xml节点标题和它的值
本文关键字:标题 节点 xml 何读取 读取 | 更新日期: 2023-09-27 17:49:38
我有以下xml
,并希望解析它并读取每个node value
和node 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
您可以使用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);
}