xdocument解析C#特定字段

时间:2013-09-11 04:11:32

标签: parsing linq-to-xml

嘿伙计们我试图解析一个xml文件。我已经附加了

的xml架构
<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="ArrayOfCourse">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Course">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="codeField" type="xsd:string" />
              <xsd:element name="semesterField" type="xsd:string" />
              <xsd:element name="titleField" type="xsd:string" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

我试图选择课程名称,课程ID和学期教学

我迷失了如何为每门课程选择特定领域

我是否遍历每个元素并将其存储到字符串中?

1 个答案:

答案 0 :(得分:0)

LINQ to XML是一种简单的方法。假设您有以下XML:

<ArrayOfCourse>
  <Course>
    <codeField>Code 1</codeField>
    <semesterField>Semester 1</semesterField>
    <titleField>Title 1</titleField>
  </Course>
  <Course>
    <codeField>Code 2</codeField>
    <semesterField>Semester 2</semesterField>
    <titleField>Title 2</titleField>
  </Course>
</ArrayOfCourse>

如果你要在这些课程上做很多工作,我建议创建一个类来保存这些值:

public class Course
{

    public string CodeField { get; set; }
    public string SemesterField { get; set; }
    public string TitleField { get; set; }
}

然后,您可以使用XML加载XDocument。假设您在名为Courses.xml的文件中包含xml:

XDocument xDoc = XDocument.Load("Courses.xml");

现在您可以使用LINQ to XML从XML创建Course个对象的集合:

List<Course> courses = (from x in xDoc.Root.Elements("Course")
                       select new Course()
                       {
                           CodeField = (string)x.Element("codeField"),
                           SemesterField = (string)x.Element("semesterField"),
                           TitleField = (string)x.Element("titleField")
                        }).ToList();

上面的代码会为您提供一个List<Course>,其中包含两个项目。每个项目都有相应的CodeFieldSemesterFieldTitleField值。

查询细分如下:

首先,它获取“课程”元素的集合(xDoc.Root.Elements("Course"))。

接下来,它接收“Course”元素的集合并使用子节点(“codeField”,“semesterField”和“titleField”)来实例化Course对象,然后将该集合转换为{{ 1}}。

LINQ to XML有很多信息和示例,以及您可以在Web上使用它做什么。以下是帮助您入门的MSDN链接 - LINQ to XML