検索
ホームページバックエンド開発XML/RSS チュートリアルLINQ to XML プログラミングに基づくグラフィック コードの詳細な紹介

1. LINQ to XML クラス

LINQ to XML プログラミングに基づくグラフィック コードの詳細な紹介

次のコードは、LINQ to XML を使用して XML をすばやく作成する方法を示しています。

コードをコピー


?

XML の作成

public static void CreateDocument()
{
    string path = @"d:\website";

    XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),
                                   new XElement("Root", "root"));

    xdoc.Save(path);
}
この例を実行すると、次の内容の XML ファイルが取得されます:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>root</Root>
2. XElement クラス XElement クラスは、LINQ to XML の基本クラスの 1 つです。 XML 要素を表します。 このクラスを使用して、要素の内容を変更したり、要素に属性を追加したり、要素の内容をテキスト形式でシリアル化したりすることができます。 また、XmlReader、XmlWriter、XslCompiledTransform などの System.Xml の他のクラスとも相互運用します。 LINQ to XML を使用して XML ドキュメントを作成する方法は多数あり、使用する具体的な方法は実際のニーズによって異なります。 XML ドキュメントを作成する最も簡単かつ一般的な方法は、XElement クラスを使用することです。次のコードは、

これはプログラムコードの一部です。

public static void CreateCategories()
{
    string path = @"d:\website";

    XElement root = new XElement("Categories",

        new XElement("Category",

            new XElement("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Beverages")
            ),

        new XElement("Category",

            new XElement("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Condiments")

            ),

        new XElement("Category",

            new XElement("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Confections")

            )

       );

    root.Save(path);

}

この例を実行すると、次の内容の XML ファイルが作成されます:

<?xml version="1.0" encoding="utf-8"?>
<Categories>
  <Category>
    <CategoryID>57485174-46fc-4e8c-8d98-d25b53d504a1</CategoryID>
    <CategoryName>Beverages</CategoryName>
  </Category>
  <Category>
    <CategoryID>1474dde1-8014-48f7-b093-b47ca5d5b770</CategoryID>
    <CategoryName>Condiments</CategoryName>
  </Category>
  <Category>
    <CategoryID>364224e0-e002-4939-90fc-0fd93e0cf35b</CategoryID>
    <CategoryName>Confections</CategoryName>
  </Category>
</Categories>

XElement クラスには、XML の処理を​​簡単にするメソッドが多数含まれています。これらの方法については MSDN を参照してください。

その中で、Save、CreateReader、ToString、および WriteTo メソッドは、最もよく使用される 3 つのメソッドです。 3. 各要素は、重複する名前を持つ属性を持つことができません。 XAttribute クラスの使用は、XElement クラスの使用と非常に似ています。次の例は、XML ツリーの作成時に属性を追加する方法を示しています。

これはプログラムコードの一部です。

public static XElement CreateCategoriesByXAttribute()
{
    XElement root = new XElement("Categories",

        new XElement("Category",

            new XAttribute("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Beverages")

            ),

        new XElement("Category",

            new XAttribute("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Condiments")

            ),

        new XElement("Category",

            new XAttribute("CategoryID", Guid.NewGuid()),

            new XElement("CategoryName", "Confections")

            )
       );

    root.Save(path);

    return root;
}

この例を実行すると、次のような内容の xml ファイルが得られます。

<?xml version="1.0" encoding="utf-8"?>
<Categories>
  <Category CategoryID="a6d5ef04-3f83-4e00-aeaf-52444add7570">
    <CategoryName>Beverages</CategoryName>
  </Category>
  <Category CategoryID="67a168d5-6b22-4d82-9bd4-67bec88c2ccb">
    <CategoryName>Condiments</CategoryName>
  </Category>
  <Category CategoryID="17398f4e-5ef1-48da-8a72-1c54371b8e76">
    <CategoryName>Confections</CategoryName>
  </Category>
</Categories>

XAttribute クラスには比較的少数のメソッドがあり、一般的に使用されるメソッドは次の 3 つです:

次の例では、Remove を使用して最初の要素を削除します。 .CategoryID 属性: LINQ to XML プログラミングに基づくグラフィック コードの詳細な紹介

行番号を表示

コードをコピー

?

これはプログラムコードの一部です。

public static void RemoveAttribute()
{

    XElement xdoc = CreateCategoriesByXAttribute();

    XAttribute xattr = xdoc.Element("Category").Attribute("CategoryID");

    xattr.Remove();

    xdoc.Save(path);

}
この例を実行すると、次の内容を含む XML ファイルが作成されます:
<?xml version="1.0" encoding="utf-8"?>
<Categories>
  <Category>
    <CategoryName>Beverages</CategoryName>
  </Category>
  <Category CategoryID="5c311c1e-ede5-41e5-93f7-5d8b1d7a0346">
    <CategoryName>Condiments</CategoryName>
  </Category>
  <Category CategoryID="bfde8db5-df84-4415-b297-cd04d8db9712">
    <CategoryName>Confections</CategoryName>
  </Category>
</Categories>
実験として、属性を削除する次の方法を試してください:
public static void RemoveAttributeByDoc()
{

    XElement xdoc = CreateCategoriesByXAttribute();

    XAttribute xattr = xdoc.Attribute("CategoryID");

    xattr.Remove();

    xdoc.Save(path);

}
この例を実行すると、要素 Categories が存在しないため、null 参照例外がスローされます。カテゴリ ID という属性があります。

4. XDocument オブジェクトには以下を含めることができます。

LINQ to XML プログラミングに基づくグラフィック コードの詳細な紹介 次の例では、いくつかの要素と属性、処理命令とコメントを含む単純な XML ドキュメントを作成します。

public static void CreateXDocument()
      {

          XDocument xdoc = new XDocument(

                  new XProcessingInstruction("xml-stylesheet", "title=&#39;EmpInfo&#39;"),

                  new XComment("some comments"),

                  new XElement("Root",

                          new XElement("Employees",

                                  new XElement("Employee",

                                          new XAttribute("id", "1"),

                                          new XElement("Name", "Scott Klein"),

                                          new XElement("Title", "Geek"),

                                          new XElement("HireDate", "02/05/2007"),

                                          new XElement("Gender", "M")

                                      )

                              )

                      ),

                  new XComment("more comments")

              );

          xdoc.Save(path);

      }

サンプルを実行します。次の内容の xml ファイルが取得されます:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet title=&#39;EmpInfo&#39;?>
<!--some comments-->
<Root>
  <Employees>
    <Employee id="1">
      <Name>Scott Klein</Name>
      <Title>Geek</Title>
      <HireDate>02/05/2007</HireDate>
      <Gender>M</Gender>
    </Employee>
  </Employees>
</Root>
<!--more comments-->
XDocument クラスには、XElement クラスと同じメソッドが複数含まれています。詳細については、MSDN を参照してください。ノードおよび要素を処理するためのほとんどの関数は、XElement を通じて取得できることに注意してください。XDocument クラスを使用する必要があるのは、ドキュメント レベルの処理機能が絶対に必要な場合、および注釈、処理命令、および宣言へのアクセスが必要な場合のみです。 。 XML ドキュメントを作成した後、NodesAfterSelf メソッドを使用して、指定された XElement 要素の後のすべての兄弟要素を返すことができます。このメソッドはコレクション内の兄弟要素のみを返し、子孫ではないことに注意してください。このメソッドは遅延実行を使用します。次のコードは、このプロセスを示しています。

行番号を表示


コードをコピー

?

これはプログラムコードの一部です。

public static void NodesAfterSelf()
{

    XElement root = new XElement("Categories",
        new XElement("Category",
                new XElement("CategoryID", Guid.NewGuid()),
                new XElement("CategoryName", "食品"),
                new XElement("Description", "可以吃的东西")
            )
        );

    foreach (var item in root.Element("Category").Element("CategoryID").NodesAfterSelf())
    {
        Console.WriteLine((item as XElement).Value);
    }
}

2. LINQ to XML プログラミングの概念

このセクションでは、xml の読み込み、新しい xml の作成、xml 情報の操作、xml ドキュメントの走査方法など、LINQ to XML プログラミングの関連概念を紹介します。 LINQ to XML プログラミングに基づくグラフィック コードの詳細な紹介

1、加载已有的xml

使用LINQ to XML加载xml可以从多种数据源获得,例如字符串、XmlReader、TextReader或文件。

下面的示例演示了如何从文件中加载xml:

public static void LoadFromFile()
{

    XElement root = XElement.Load(path);

    Console.WriteLi


也可以使用Parse方法从一个字符串加载xml:

public static void LoadFromString()
    {

        XElement root = XElement.Parse(@"

    <Categories>

      <Category>

        <CategoryID>1</CategoryID>

        <CategoryName>Beverages</CategoryName>

        <Description>Soft drinks, coffees, teas, beers, and ales</Description>

      </Category>

    </Categories>

");

        Console.WriteLine(root.ToString());

    }

2、保存xml

在前面的示例中曾多次调用XElement对象的Save方法来保存xml文档,在这里就不冗述了。

3、创建xml

在前面的示例中曾多次调用XElement对象的构造函数来创建xml文档,在这里就不冗述了。需要说明的是,在使用LINQ to XML创建xml文档时,会有代码缩进,这使代码的可读性大大加强。

4、遍历xml

使用LINQ to XML在xml树中遍历xml是相当简单的。只需要使用XElement和XAttribute类中所提供的方法。Elements和Element方法提供了定位到某个或某些元素的方式。下面的示例演示了如何遍历xml树,并获取指定元素的方式:

public static void Enum()

{

    XElement root = new XElement("Categories");

    using (NorthwindDataContext db = new NorthwindDataContext())

    {

        root.Add(

                db.Categories

                .Select

                (

                    c => new XElement

                    (

                        "Category"

                        , new XElement("CategoryName", c.CategoryName)

                    )

                )

            );

    }

    foreach (var item in root.Elements("Category"))
    {
        Console.WriteLine(item.Element("CategoryName").Value);

    }

}

上述代码运行的结果为:

LINQ to XML プログラミングに基づくグラフィック コードの詳細な紹介 

是不是很简单呢?Nodes()、Elements()、Element(name)和Elements(name)方法为xml树的导航提供了基本功能。

5、操纵xml

LINQ to XML一个重要的特性是能够方便地修改xml树,如添加、删除、更新和复制xml文档的内容。

I.插入

使用XNode类的插入方法可以方便地向xml树添加内容:

LINQ to XML プログラミングに基づくグラフィック コードの詳細な紹介

在下面的示例中,使用AddAfterSelf方法向现有xml中添加一个新节点:

public static void AddAfterSelf()

{

    XElement root = XElement.Parse(@"

        <Categories>

          <Category>

            <CategoryID>1</CategoryID>

            <CategoryName>Beverages</CategoryName>

            <Description>Soft drinks, coffees, teas, beers, and ales</Description>

          </Category>

        </Categories>

    ");

    XElement xele = root.Element("Category").Element("CategoryName");

    xele.AddAfterSelf(new XElement("AddDate", DateTime.Now));

    root.Save(path);

}

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>

<Categories>

  <Category>

    <CategoryID>1</CategoryID>

    <CategoryName>Beverages</CategoryName>

    <AddDate>2010-01-31T03:08:51.813736+08:00</AddDate>

    <Description>Soft drinks, coffees, teas, beers, and ales</Description>

  </Category>

</Categories>

当需要添加一个元素到指定节点之前时,可以使用AddBeforeSelf方法。

 

II.更新

在LINQ to XML中更新xml内容可以使用以下几种方法:

LINQ to XML プログラミングに基づくグラフィック コードの詳細な紹介

在下面的示例中使用了ReplaceWith与SetElementValue方法对xml进行了更新操作:

public static void Update()
{

    XElement root = XElement.Parse(@"
                                   <Categories>
                                      <Category>
                                        <CategoryID>1</CategoryID>
                                        <CategoryName>Beverages</CategoryName>
                                        <Description>Soft drinks, coffees, teas, beers, and ales</Description>
                                      </Category>
                                    </Categories>
                                  ");

    root.Element("Category").Element("CategoryID").ReplaceWith(new XElement("ID", "2"));
    root.Element("Category").SetElementValue("CategoryName", "test data");
    root.Save(path);
}

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>

<Categories>

  <Category>

    <ID>2</ID>

    <CategoryName>test data</CategoryName>

    <Description>Soft drinks, coffees, teas, beers, and ales</Description>

  </Category>

</Categories>

III.删除

可以使用Remove(XElement)与RemoveAll方法来删除xml。

在下面的示例中,使用了RemoveAll方法:

}
  public static void Remove()
  {
      string path = @"d:\";

      XElement root = XElement.Parse(@"
                                  <Categories>

                                    <Category>

                                      <CategoryID>1</CategoryID>

                                      <CategoryName>Beverages</CategoryName>

                                      <Description>Soft drinks, coffees, teas, beers, and ales</Description>

                                    </Category>

                                  </Categories>

                                ");

      root.RemoveAll();

      root.Save(path);

  }

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>

<Categories />

在下面的示例中,使用了Remove方法删除了xml的Description元素:

public static void Remove()
{

    XElement root = XElement.Parse(@"
                                <Categories>
                                  <Category>
                                    <CategoryID>1</CategoryID>
                                    <CategoryName>Beverages</CategoryName>
                                    <Description>Soft drinks, coffees, teas, beers, and ales</Description>
                                  </Category>
                                </Categories>
                                ");

    root.Element("Category").Element("Description").Remove();
    root.Save(path);
}

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>

<Categories>

  <Category>

    <CategoryID>1</CategoryID>

    <CategoryName>Beverages</CategoryName>

  </Category>

</Categories>

 

6、处理属性

I.添加

LINQ to XML添加属性与添加元素师类似的,可以使用构造函数或者Add方法来添加属性:

public static void AddAttribute()
{
    XElement root = new XElement("Categories",
        new XElement("Category",
            new XAttribute("CategoryID", "1"),
            new XElement("CategoryName", "Beverages"),
            new XElement("Description", "Soft drinks, coffees, teas, beers, and ales")
        )
    );

    root.Element("Category").Add(new XAttribute("AddDate", DateTime.Now.ToShortDateString()));
    root.Save(path);
}

运行该示例将会得到一个xml文件,其内容为:

<?xml version="1.0" encoding="utf-8"?>

<Categories>

  <Category CategoryID="1" AddDate="2010-01-31">

    <CategoryName>Beverages</CategoryName>

    <Description>Soft drinks, coffees, teas, beers, and ales</Description>

  </Category>

</Categories>

II.检索

检索属性可以使用Attribute(name)方法:

显示行号 复制代码 这是一段程序代码。

public static void SelectAttribute()
{
    XElement root = new XElement("Categories",
        new XElement("Category",
            new XAttribute("CategoryID", "1"),
            new XElement("CategoryName", "Beverages"),
            new XElement("Description", "Soft drinks, coffees, teas, beers, and ales")
        )
    );

    XAttribute xattr = root.Element("Category").Attribute("CategoryID");
    Console.WriteLine(xattr.Name);
    Console.WriteLine(xattr.Value);
}

上述代码的运行结果为:

CategoryID
1

本文总结

本文介绍了LINQ to XML的编程基础,即System.Xml.Linq命名空间中的多个LINQ to XML类,这些类都是LINQ to XML的支持类,它们使得处理xml比使用其他的xml工具容易得多。在本文中,着重介绍的是XElement、XAttribute和XDocument。 

 以上就是LINQ to XML 编程基础的图文代码详细介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JSON対XML:RSSがXMLを選択した理由JSON対XML:RSSがXMLを選択した理由May 05, 2025 am 12:01 AM

RSSは、JSONの代わりにXMLを選択しました。1)XMLの構造と検証機能は、RSS複雑なデータ構造のニーズに適したJSONよりも優れています。 2)その時点でXMLは広くサポートされていました。 3)RSSの初期バージョンはXMLに基づいており、標準になっています。

RSS:XMLベースの形式で説明しましたRSS:XMLベースの形式で説明しましたMay 04, 2025 am 12:05 AM

RSSは、頻繁に更新されるコンテンツを購読および読み取りに使用するXMLベースの形式です。その実用的な原則には、生成と消費の2つの部分が含まれ、RSSリーダーを使用することで情報を効率的に取得できます。

RSSドキュメント内:必須XMLタグと属性RSSドキュメント内:必須XMLタグと属性May 03, 2025 am 12:12 AM

RSSドキュメントのコア構造には、XMLタグと属性が含まれます。特定の解析と生成の手順は次のとおりです。1。XMLファイル、プロセス、タグを読み取ります。 2。抽出、、、、などのタグ情報。 3。バージョンの互換性を確保するために、カスタムタグと属性を処理します。 4.キャッシュと非同期処理を使用して、パフォーマンスを最適化してコードの読みやすさを確保します。

JSON、XML、およびデータ形式:RSSの比較JSON、XML、およびデータ形式:RSSの比較May 02, 2025 am 12:20 AM

JSON、XML、およびRSSの主な違いは構造と使用です。1。JSONは、簡潔な構造と解析が簡単な単純なデータ交換に適しています。 2。XMLは、複雑なデータ構造に適しており、厳密な構造ですが複雑な解析があります。 3。RSSはXMLに基づいており、コンテンツのリリースに使用され、標準化されていますが使用が制限されています。

XML/RSSフィードのトラブルシューティング:一般的な落とし穴と専門家のソリューションXML/RSSフィードのトラブルシューティング:一般的な落とし穴と専門家のソリューションMay 01, 2025 am 12:07 AM

XML/RSSフィードの処理には、解析と最適化が含まれ、一般的な問題にはフォーマットエラー、エンコードの問題、および欠落要素が含まれます。ソリューションには以下が含まれます。1。XML検証ツールを使用して、フォーマットエラーを確認します。 2。エンコーディングの一貫性を確保し、シャルドライブラリを使用してエンコードを検出します。 3.デフォルト値を使用するか、要素が欠落しているときに要素をスキップします。 4. LXMLやキャッシュの解析結果などの効率的なパーサーを使用して、パフォーマンスを最適化します。 5. XML注入攻撃を防ぐために、データの一貫性とセキュリティに注意してください。

RSSドキュメントの解読:フィードの読み取りと解釈RSSドキュメントの解読:フィードの読み取りと解釈Apr 30, 2025 am 12:02 AM

RSSドキュメントを解析する手順には、次のものがあります。1。XMLファイルを読み取り、2。DOMまたはSAXを使用してXML、3。Extract見出し、リンク、その他の情報、および4。プロセスデータ。 RSSドキュメントは、RSSリーダーまたはデータ処理ツールの構築に適した、更新されたコンテンツ、構造、および要素を公開するために使用されるXMLベースの形式です。

RSSおよびXML:Webシンジケーションの礎石RSSおよびXML:Webシンジケーションの礎石Apr 29, 2025 am 12:22 AM

RSSとXMLは、ネットワークコンテンツの分布とデータ交換のコアテクノロジーです。 RSSは頻繁に更新されるコンテンツを公開するために使用され、XMLはデータの保存と転送に使用されます。開発効率とパフォーマンスは、実際のプロジェクトでの使用例とベストプラクティスを通じて改善できます。

RSSフィード:XMLの役割と目的の調査RSSフィード:XMLの役割と目的の調査Apr 28, 2025 am 12:06 AM

RSSFeedにおけるXMLの役割は、データを構成し、標準化し、スケーラビリティを提供することです。 1.xmlはRSSFeedデータを構造化するため、解析と処理が簡単になります。 2.xmlは、RSSFeedの形式を定義する標準化された方法を提供します。 3.XMLスケーラビリティにより、RSSFeedは必要に応じて新しいタグと属性を追加できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール