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

CourseLINQ to XML を使用して、XML からオブジェクトのコレクションを作成できるようになりました。

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>、2 つの項目を含む を提供します。各アイテムには、対応するCodeFieldSemesterFieldおよびTitleField値があります。

クエリは次のように分類されます。

まず、「コース」要素のコレクションを取得します ( 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 に答える