- PR -

C#からのXMLファイルへの追加処理

1
投稿者投稿内容
RIZ
ベテラン
会議室デビュー日: 2003/11/05
投稿数: 61
投稿日時: 2003-11-19 19:36
XMLについてまた質問なのですが、お願いします。

要素の追加についての質問なのですが、XMLの構造は下記のようになっています。
<?xml version="1.0" encoding="utf-8"?>
<Data>
<books Num="3">
<book No="100">
<title>日本史</title>
<name ID="004">TANAKA</name>
</book>
</books>
</Data>

XMLの追加処理は下記のようにして行っています。追加をするのはbook要素以下のノードです。
xml = new XmlDocument();
xml.Load(XMLのあるファイルパス);
XmlElement ele=null;
ele = xml.CreateElement("book");
ele.SetAttribute("No","110");
XmlElement ele2 = xml.CreateElement("title");
ele2.InnerText = "歴史";
ele.AppendChild(ele2);
XmlElement ele3 = xml.CreateElement("name");
ele3.SetAttribute("ID","001");
ele3.InnerText = "YAMADA";
ele.AppendChild(ele3);
xml.DocumentElement.AppendChild(ele);
XmlTextWriter tr = new XmlTextWriter(XMLのあるファイルパス(読込んだXMLへ保存します));
tr.Formatting = Formatting.Indented;
xml.WriteContentTo(tr);
tr.Close();

この処理を実行すると上記XMLは下記のようになります。
<?xml version="1.0" encoding="utf-8"?>
<Data>
<books Num="3">
<book>
<title>日本史</title>
<name ID="004">TANAKA</name>
</book>
</books>
<book No="110">
<title>歴史</title>
<name ID="001">YAMADA</name>
</book>
</Data>

しかし、このような形の登録ではなく、下記のXMLのようにbooks要素の下へ
登録したのです。
<?xml version="1.0" encoding="utf-8"?>
<Data>
<books Num="3">
<book No="100">
<title>日本史</title>
<name ID="004">TANAKA</name>
</book>
<book No="110">
<title>歴史</title>
<name ID="001">YAMADA</name>
</book>
</books>
</Data>

このようにするには、おそらくBooks要素の下へ追加という処理をいれなければならないと思うのですが、
どのようにすればよいのでしょうか?


また、book全体の追加ではなく、たとえば下記のようになっており・・・
<book No="100">
<title>日本史</title>
<name ID="004">TANAKA</name>
</book>

このbook要素へ、Priceという現状にあるBook要素への新規要素の追加というのも行いたいです。

<book No="100">
<title>日本史</title>
<name ID="004">TANAKA</name>
<Price>3000</Price>
</book>

この場合だとおそらく現状のXMLを検索し、『book要素のNo属性値が100のname要素の下へ追加』という処理をいれなければならないのだと思ってます。だたこれをどのようにして利用して処理すればよいのかが分からなくて・・・


よろしくお願いいたします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2003-11-20 00:07
こんにちわ。諸農です。

引用:

RIZさんの書き込み (2003-11-19 19:36) より:

xml.DocumentElement.AppendChild(ele);



これだとルートに追加されますよね。。
前回使った「SelectSingleNode()」でbooksのノードを
求めてから、AppendChild()すればいいのでは?

ではでは(^^)/
_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
RIZ
ベテラン
会議室デビュー日: 2003/11/05
投稿数: 61
投稿日時: 2003-11-22 02:03
Jubeiさん、ありがとうございます。

xml.DocumentElementへの追加ばかりに頭がいっていました(^^;

検索して、XmlNodeのインスタンスを生成して、そこへAppendChildにて
要素の追加を行いました。
無事成功しました。

今回もありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)