【问题标题】:Parsing xml using c# and windows phone 7使用 c# 和 windows phone 7 解析 xml
【发布时间】:2012-11-15 08:20:35
【问题描述】:

我有一个这样的 xml 文件:

  <xml>
    <students>
      <person name=jhon/>
      <person name=jack/>
      ...
    </students>
    <teachers>
       <person name="jane" />
       <person name="jane" />
       ...
    </teachers>
  </xml>

如果我使用此代码:

var xml = XDocument.Parse(myxmlstring, LoadOptions.None);
foreach(XElement studentelement in xml.Descendants("person"))
{
    MessageBox.Show(studentelement.Attribute("name").Value);
}

一切正常!但是,我不知道我是在迭代学生还是老师。

但是当我尝试时:

var a = xml.Element("students");

a 为空!!!

如何使用 c# 在我的 xml 文档中选择特定元素?

如果我可以先迭代学生,填充一些列表框,然后迭代老师并做其他事情,那就太棒了。 :)

xml文件不能修改,以防万一……

最后,我真正想要的只是在我的文件中获取特定元素的所有子元素。

谢谢大家!!!

【问题讨论】:

    标签: c# xml linq windows-phone-7 xml-parsing


    【解决方案1】:

    但是当我尝试时:var a = xml.Element("students");

    a 为空!!!

    是的,因为xml 是文档,它下面只有一个 元素——称为xml。如果你使用:

    var students = xml.Root.Element("students");
    

    相反,它会在根元素的正下方寻找&lt;students&gt;,这样就可以了。

    或者,您可以使用Element 两次:

    var students = xml.Element("xml").Element("students");
    

    当然也可以使用Descendants

    此外,您可以使用 Parent 属性访问元素的父元素...因此,如果您想遍历 all person 元素并出于某种原因使用父元素名称,你当然可以这样做。

    【讨论】:

      【解决方案2】:

      Element 只返回直接子节点。要递归浏览 xml 树,请改用 Descendants

      要依次枚举学生和教师,您可以执行以下操作:

      var xml = XDocument.Parse(myxmlstring, LoadOptions.None);
      
      var students = xml.Descendants("students");
      var teachers = xml.Descendants("teachers");
      
      foreach (var studentElement in students.Descendants("person"))
      {
          MessageBox.Show(studentElement.Attribute("name").Value);
      }
      
      foreach (var teacherElement in teachers.Descendants("person"))
      {
          MessageBox.Show(teacherElement.Attribute("name").Value);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 2011-10-19
        • 2013-01-11
        • 2013-05-02
        • 1970-01-01
        相关资源
        最近更新 更多