【问题标题】:xdocument parsing C# specific fieldsxdocument 解析 C# 特定字段
【发布时间】:2013-09-11 04:11:31
【问题描述】:

大家好,我正在尝试解析 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 和教授的学期

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

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

【问题讨论】:

    标签: parsing linq-to-xml


    【解决方案1】:

    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&lt;Course&gt;,里面有两个项目。每个项目都有对应的CodeFieldSemesterFieldTitleField 值。

    查询分解如下:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 2018-07-24
      • 2023-03-17
      相关资源
      最近更新 更多