Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用c#和WindowsPhone7解析xml_C#_Xml_Linq_Windows Phone 7_Xml Parsing - Fatal编程技术网

使用c#和WindowsPhone7解析xml

使用c#和WindowsPhone7解析xml,c#,xml,linq,windows-phone-7,xml-parsing,C#,Xml,Linq,Windows Phone 7,Xml Parsing,我有这样一个xml文件: <xml> <students> <person name=jhon/> <person name=jack/> ... </students> <teachers> <person name="jane" /> <person name="jane" /> ...

我有这样一个xml文件:

  <xml>
    <students>
      <person name=jhon/>
      <person name=jack/>
      ...
    </students>
    <teachers>
       <person name="jane" />
       <person name="jane" />
       ...
    </teachers>
  </xml>
一切正常!然而,我不知道我是在重复学生还是老师

但当我尝试时:

var a = xml.Element("students");
a是空的

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

如果我能先遍历学生,填充一些列表框,遍历老师,做其他事情,那就太棒了。:)

无法修改xml文件,以防万一

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

谢谢大家

但是当我尝试时:var a=xml.Element(“学生”)

a是空的

是的,因为
xml
是文档,它下面只有一个直接元素,叫做
xml
。如果您使用:

var students = xml.Root.Element("students");
相反,它会在根元素的正下方查找
,这样就可以工作了

或者,您可以使用
元素
两次:

var students = xml.Element("xml").Element("students");
当然,也可以使用子体

此外,您可以使用
parent
属性访问元素的父元素。。。因此,如果您想迭代所有
person
元素并出于某种原因使用父元素名,那么您当然可以这样做

但是当我尝试时:var a=xml.Element(“学生”)

a是空的

是的,因为
xml
是文档,它下面只有一个直接元素,叫做
xml
。如果您使用:

var students = xml.Root.Element("students");
相反,它会在根元素的正下方查找
,这样就可以工作了

或者,您可以使用
元素
两次:

var students = xml.Element("xml").Element("students");
当然,也可以使用子体


此外,您可以使用
parent
属性访问元素的父元素。。。因此,如果您想迭代所有
person
元素并出于某种原因使用父元素名称,您当然可以这样做。

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

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

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);
}

元素
仅返回直接子节点。要递归浏览xml树,请改用子体

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

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);
}