0

嘿伙计们,我正在尝试解析 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 和教授的学期

我不知道如何为每门课程选择特定字段

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

4

1 回答 1

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>有两个项目的。每个项目都有对应的CodeField,SemesterFieldTitleField值。

查询分解如下:

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

接下来,它使用“Course”元素的集合并使用子元素(“codeField”、“semesterField”和“titleField”)来实例化一个Course对象,然后将该集合转换为List<Course>.

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

于 2013-09-11T06:11:07.327 回答