- - PR -
Xmlのルート要素を追加について
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| 
 | 投稿日時: 2008-01-20 21:04Xmlのルート要素追加についての質問です。 例のようなXmlがあるのですが、 【例】 <?xml version="1.0" encoding="UTF-8"?> <Test> <Info> <ID>001</ID> <Name>name1</Name> <Age>23</Age> </Info> </Test> <Info> </Info> を追加するところで躓いてしまいました。 処理内容として XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("読み込むXmlファイルパス"); XmlNode nodeRoot = xmlDoc.SelectSingleNode("/Test"); XmlElement elementNode = xmlDoc.CreateElement("Info"); nodeRoot.AppendChild(elementNode); xmlDoc.Save("保存するXmlファイルパス"); と書いたのですが、保存されたXmlファイルは <Test> <Info> <ID>001</ID> <Name>name1</Name> <Age>23</Age> </Info> <Info /> <ID>002</ID> <Name>name2</Name> <Age>24</Age> </Test> となってしまい、<Info>の終了タグを</Test>の前に追加するにはどのようにしたらよろしいのでしょうか? 開発言語はVisualStudio2005のC#です。 | ||||||||
| 
 | 投稿日時: 2008-01-20 23:14VisualStudio2005もC#も使用したことがありませんので確かではありませんが 処理内容をかなり省略してませんか? <ID>002</ID> <Name>name2</Name> <Age>24</Age> の部分をnodeRootにappendするコードが書いてあるように思えます。 elementNodeに上記要素を追加するようにしてみてください。 | ||||||||
| 
 | 投稿日時: 2008-01-20 23:57処理内容を省略してしまい、大変失礼いたしました。 具体的な処理内容は以下の通りです。 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("読み込むXmlファイルパス"); XmlNode nodeRoot = xmlDoc.SelectSingleNode("/Test"); XmlElement elementNode = xmlDoc.CreateElement("Info"); nodeRoot.AppendChild(elementNode); elementNode = xmlDoc.CreateElement("ID"); elementNode.AppendChild(xmlDoc.CreateTextNode(textBox1.Text)); xmlDoc.DocumentElement.AppendChild(elementNode); elementNode = xmlDoc.CreateElement("Name"); elementNode.AppendChild(xmlDoc.CreateTextNode(textBox2.Text)); xmlDoc.DocumentElement.AppendChild(elementNode); elementNode = xmlDoc.CreateElement("Age"); elementNode.AppendChild(xmlDoc.CreateTextNode(textBox3.Text)); xmlDoc.DocumentElement.AppendChild(elementNode); xmlDoc.Save("保存するXmlファイルパス"); このように書くと保存されたXmlファイルが以下のようになってしまいました。 <Test> <Info> <ID>001</ID> <Name>name1</Name> <Age>23</Age> </Info> <Info /> <ID>002</ID> <Name>name2</Name> <Age>24</Age> </Test> 因みに <Info> <ID>001</ID> <Name>name1</Name> <Age>23</Age> </Info> は初期値として書いていたものです。 | ||||||||
| 
 | 投稿日時: 2008-01-21 09:39elementNodeが途中で上書きされて 作成したInfoオブジェクトへアクセスできないようになってしまっています xmlDoc.DocumentElementは/Testを取得しますので そこへ追加しているので <Test>の小として扱われてしまっています elementNodeにInfoノードオブジェクトが入っているので そこにID等小として追加することで行えます 
 XMLファイル 
 | ||||||||
| 
 | 投稿日時: 2008-01-23 23:18回答ありがとうございます。 コーディングしたところ、無事にルートを追加することが出来ました。 | ||||||||
1

