字符串生成器到XML遍历每个节点
本文关键字:遍历 节点 XML 字符串 | 更新日期: 2023-09-27 17:58:30
嗨,我有一个XML
数据,它在StringBuilder
中形成,如下
StringBuilder sb = new StringBuilder();
sb.Append("<?xml version='"1.0'" encoding='"utf-16'"?>");
sb.Append("<TEST>"
+ "<DEMO><CONTENTINFO name='"Nani'" receiver='"Lucky'""
+ "/></DEMO></TEST>");
XmlDocument XMLDocument = new XmlDocument();
XMLDocument.LoadXml(sb.ToString());
XmlNodeList nodeList = XMLDocument.FirstChild.ChildNodes;
foreach (XmlNode node in nodeList)
{
}
我尝试使用XMLDocument
遍历子节点以获得需要拆分数据的数据,这样它就可以给出name=Nani
和receiver=lucky
,或者将键和值存储在像dic.Add("name","nani") and dic.Add("receiver","lucky")
这样的dictionary
中。所以有人能帮我如何整理吗
如果您喜欢形成一组强大的类实例,请使用XmlSerializer并创建类来表示XML结构的每个级别。
[XmlRoot("TEST")]
public class Test
{
[XmlElement(Name = "DEMO")]
public Demo Demo
{
get;
set;
}
}
public class Demo
{
[XmlElement("CONTENTINFO")]
public ContentInfo ContentInfo
{
get;
set;
}
}
public class ContentInfo
{
[XmlAttribute(Name = "name")]
public string Name
{
get;
set;
}
[XmlAttribute(Name = "receiver")]
public string Reciever
{
get;
set;
}
}
XmlSerializer serializer = new XmlSerializer(typeof(Test));
serializer.Serialize(....);
Test testInstance = serializer.Deserialize(....);
... etc.
上面的代码还没有经过测试,但应该会为您提供要点。
为什么要使用StringBuilder
生成XML?有更好的方法:
var root = new XDocument();
var test = new XElement("TEST");
var demo = new XElement("DEMO");
var contentInfo = new XElement("CONTENTINFO",
new XAttribute("name", "Nani"),
new XAttribute("receiver", "Lucky"));
demo.Add(contentInfo);
test.Add(demo);
root.Add(test);
要将所需的值提取到字典中,可以使用以下LINQ查询:
var foo = root.Descendants("DEMO").Elements("CONTENTINFO")
.SelectMany(x => x.Attributes())
.ToDictionary(x => x.Name.ToString(), x => x.Value.ToString());
这会给你一本字典,看起来像这样:
密钥:名称=价值:纳尼,
密钥:receiver=值:Lucky