【问题标题】:Deserialize XML with C#使用 C# 反序列化 XML
【发布时间】:2018-02-03 03:05:43
【问题描述】:

如何使用 C# 将 lib 的 id 属性放入 foreach 中?我需要对每个字符串做一些事情,并且我需要以某种 foreach 方式使用它?谁能帮忙。

<map>
  <lib id="blue" revision="58399">
    <part id="2732" type="ch"/>
    <part id="2732" type="ls"/>
    <part id="2732" type="rs"/>
    <part id="2733" type="ch"/>
  </lib>
  <lib id="black" revision="26609">
    <part id="2109" type="cc"/>
    <part id="2109" type="lc"/>
    <part id="2109" type="rc"/>
  </lib>
</map>

这是我尝试过的,虽然它返回 null。

var document = XDocument.Load(_storagePath + "/file.xml");

foreach (var child in document.Elements())
{
    foreach (var childOfChild in child.Elements())
    {
        Console.WriteLine(childOfChild.Element("id").Value);
    }
}

【问题讨论】:

  • 到目前为止,您为解决这个问题做了什么尝试?你在这方面面临什么问题?
  • 我没有尝试过任何东西,因为我是 C# 新手,不知道如何做,请问我从哪里开始?
  • 你从学习 C# 课程开始,拿起一本书,探索命名空间,阅读 MSDN...你不是从 SO 开始的。
  • 你说得好像我是认真的,我是 14 岁该死的男人,我只是为我的朋友申请,我不想花几个小时学习所有关于 XML。

标签: c# .net xml


【解决方案1】:

有多种方法可以获取lib元素的id属性。

这里是通用代码(xml变量):

var xml = @"<map>
             <lib id=""blue"" revision=""58399"">
                 <part id=""2732"" type=""ch""/>
                 <part id=""2732"" type=""ls""/>
                 <part id=""2732"" type=""rs""/>
                 <part id=""2733"" type=""ch""/>
             </lib>
                 <lib id=""black"" revision=""26609"">
                 <part id=""2109"" type=""cc""/>
                 <part id=""2109"" type=""lc""/>
                 <part id=""2109"" type=""rc""/>
             </lib>
           </map>";

这是一个:

var xdoc = XDocument.Parse(xml);
foreach (var lib in xdoc.Descendants("lib"))
    Console.WriteLine(lib.Attribute("id").Value);

两个:

var xdoc = XDocument.Parse(xml);
foreach (var item in xdoc.Root.Elements("lib"))
    Console.WriteLine(item.Attribute("id").Value);

三个(使用 XPath):

var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
foreach (XmlAttribute attr in xmlDoc.SelectNodes("/map/lib/@id"))
    Console.WriteLine(attr.Value);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-28
    • 2011-05-12
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2012-02-02
    • 2012-04-28
    相关资源
    最近更新 更多