- 締切済み
XMLファイル内のデータ(値)を変更するには?
XMLファイルに書かれているデータを変更するプログラムを書きたいのですが、何か良い方法はありますか? 言語は問いません、初歩的な質問かもしれませんがお願いします。 以下valueの部分(数値)を、 value='12'からvalue='13' のように変更したいのですが、便利な関数などあるでしょうか? <set name='その1' value='12' /> <set name='その2' value='3' /> <set name='その3' value='5' /> <set name='その4' value='10' /> XMLファイルをオープンして読み込んでから、正規表現などでvalueの値を取得、変更し、ファイルを上書きするのではスマートで無い気がしまして。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- himajin100000
- ベストアンサー率54% (1660/3060)
Option Explicit On Option Strict On Option Compare Binary ' Option Infer Off 'http://support.microsoft.com/kb/317069/en-us Class Q4095116A Shared Sub Main 'XPathとかDOMとか組み合わせて使えばいいんじゃないの? 'Javaが関心カテゴリに入っている以上細かい解説はしないで大丈夫だと思うけど。(使ったのはVB.NET) 'Instantiate the XPathDocument class. Dim xmldoc As New System.Xml.XmlDocument() xmldoc.Load("./Q4095116-1.xml") 'Instantiate the XPathNavigator class. Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator() 'Instantiate the XPathIterator class. '質問文から読み取れなかったが,どっちだろ。 'ルート要素のhoge要素の子要素のset要素で,かつその要素のname属性が'その1'という値を持つとき、そのvalue属性を列挙するイテレータ Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("/hoge/set[@name='その1']/@value") 'ルート要素のhoge要素の子要素のset要素で,かつ、その要素のvalue属性が12であるとき、そのそのvalue属性を列挙するイテレータ 'Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("/hoge/set[@value='12']/@value") Do While iterator.MoveNext iterator.Current.SetValue("13") Loop xmldoc.Save("./Q4095116-1.xml") End Sub End Class ========xmlファイル(exeと同じディレクトリに配置したQ4095116-1.xml)=========== <?xml version="1.0" encoding="UTF-8"?> <hoge> <!-- ルート要素がないとXMLにならないので。また,上位の要素では名前空間が宣言されていないものとする。--> <set name="その1" value="12" /> <set name="その2" value="3" /> <set name="その3" value="5" /> <set name="その4" value="10" /> </hoge>
お礼
ご回答ありがとうございます。 結論を申しますと、VB.NETの内容は理解出来ませんでした。 XPathとDOMについても理解が浅いので、勉強しなおしてきます。 これだけの回答を頂いたのに、中途半端なお礼ですみません。