.NET Framework SDK の XmlDocument クラスを使用して XML を変更および保存する方法

サポートが終了した KB の内容についての免責事項

この記事は、マイクロソフトがサポートを提供しなくなった製品について記述しています。 したがって、この記事は「現状のまま」で提供され、更新されることはありません。

この資料では、次の .NET Framework クラス ライブラリの名前空間を参照しています。

  • System.XML

概要

このサンプルでは、XmlDocument クラスを使用して XML を更新および保存する方法について説明します。



必要条件

必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は次のとおりです。

  • Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server、Windows NT 4.0 Server のいずれか
  • Microsoft Visual Studio .NET
この資料は、次のトピックについて詳しい知識のあるユーザーを対象としています。

  • XML の用語

  • XML ファイルの作成と読み取り
  • ドキュメント オブジェクト モデル (DOM)
先頭に戻る

XmlDocument クラスを使用して XML を保存する方法

  1. Visual Studio .NET で新しい Visual Basic コンソール アプリケーションまたは C# コンソール アプリケーションを作成します。

  2. プロジェクトが System.Xml 名前空間を参照していることを確認します。

  3. Xml 名前空間で Imports ステートメントを使用して、後続のコードで XmlTextReader 宣言の修飾を省略できるようにします。Imports ステートメントは、その他の宣言を行う前に使用する必要があります。


    Visual Basic .NET のコード
    Imports System.Xml
    C# のコード
    using System.Xml;
  4. 新しい XmlDocument クラスを作成し、Load メソッドを使用して読み込みます。



    XmlDocument クラスは XML ドキュメントを表します。このクラスには Load メソッドがあり、ファイル、ストリーム、または XmlReader からドキュメントを読み込みます。



    Visual Basic .NET のコード
    Dim myXmlDocument as XmlDocument = new XmlDocument()
    myXmlDocument.Load("books.xml")
    C# のコード
    XmlDocument myXmlDocument = new XmlDocument();
    myXmlDocument.Load("books.xml");
    ここでは Books.xml ファイルが使用されていますが、独自の Books.xml ファイルを作成することもできます。また、Visual Studio .NET および .NET Framework Software Development Kit (SDK) には、サンプルの Books.xml ファイルが含まれています。

  5. XmlNode オブジェクトには、ノードを操作するためのメソッドとプロパティが用意されています。XML ノードを操作するには、XmlDocument の DocumentElement プロパティによって返される XmlNode オブジェクトを使用します。


    Visual Basic .NET のコード
    Dim node as XmlNode
    node = myXmlDocument.DocumentElement
    C# のコード
    XmlNode node;
    node = myXmlDocument.DocumentElement;
  6. ドキュメント要素の子を繰り返し処理し、すべての "price" ノードを検出します。Node オブジェクトの ChildNodes プロパティに関して For Each ループ構文を使用して、Name プロパティが "price" であるすべてのノードを検出します。以下の Visual Basic .NET のコードでは、その書籍の価格を 2 倍にします。C# のコードでは、価格を 20% 増にします。


    Visual Basic .NET のコード
    Dim node2 As XmlNode 'Used for internal loop.
    Dim nodePriceText As XmlNode
    For Each node In node.ChildNodes
    'Find the price child node.
    For Each node2 In node.ChildNodes
    If node2.Name = "price" Then
    ' nodePriceText = node2.InnerText
    Dim price As Decimal
    price = System.Decimal.Parse(node2.InnerText)

    ' Double the price.
    Dim newprice As String
    newprice = CType(price * 2, Decimal).ToString("#.00")
    Console.WriteLine("Old Price = " & node2.InnerText & Strings.Chr(9) & "New price = " & newprice)
    node2.InnerText = newprice
    End If
    Next
    Next
    C# のコード
    foreach(XmlNode node1 in node.ChildNodes)
    foreach (XmlNode node2 in node1.ChildNodes)
    if (node2.Name == "price")
    {
    Decimal price = Decimal.Parse(node2.InnerText);
    // Increase all the book prices by 20%
    String newprice = ((Decimal)price*(new Decimal(1.20))).ToString("#.00");
    Console.WriteLine("Old Price = " + node2.InnerText + "\tNew price = " + newprice);
    node2.InnerText = newprice;
    }
  7. XmlDocument クラスの Save メソッドを使用して、変更された XML を InflatedPriceBooks.xml という新しいファイルに保存します。



    Save メソッドを使用すると、XML データをファイル、ストリーム、および XmlWriters に保存できます。


    Visual Basic .NET のコード
    myXmlDocument.Save("InflatedPriceBooks.xml")
    C# のコード
    myXmlDocument.Save("InflatedPriceBooks.xml");
  8. プロジェクトをビルドして実行します。

先頭に戻る

関連情報

詳細については、次の Web サイトを参照してください。

先頭に戻る
プロパティ

文書番号:301233 - 最終更新日: 2008/04/28 - リビジョン: 1

フィードバック