- - PR -
Xmlのルート要素を追加について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-01-20 21:04
Xmlのルート要素追加についての質問です。
例のような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:14
VisualStudio2005も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:39
elementNodeが途中で上書きされて
作成したInfoオブジェクトへアクセスできないようになってしまっています xmlDoc.DocumentElementは/Testを取得しますので そこへ追加しているので <Test>の小として扱われてしまっています elementNodeにInfoノードオブジェクトが入っているので そこにID等小として追加することで行えます
XMLファイル
| ||||||||
|
投稿日時: 2008-01-23 23:18
回答ありがとうございます。
コーディングしたところ、無事にルートを追加することが出来ました。 |
1