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の値を取得、変更し、ファイルを上書きするのではスマートで無い気がしまして。
No.1ベストアンサー
- 回答日時:
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についても理解が浅いので、勉強しなおしてきます。
これだけの回答を頂いたのに、中途半端なお礼ですみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ちょっと先の未来クイズ第2問
9月9日(月)に発表される「第3回子どもマネー川柳」に入賞する川柳を考えてこちらに投稿してください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBSでxmlの値を書き換えたい
Visual Basic(VBA)
-
xmlファイル内の文字列置換
Visual Basic(VBA)
-
XMLでのAttributeを持ったNodeの追加方法
Visual Basic(VBA)
-
-
4
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
5
XML文書の指定した属性値を持つノードを取得したい
XML
-
6
VBA でxmlの全要素・属性の読み込み
Visual Basic(VBA)
-
7
XPathで途中に名前空間が設定されていると狙った要素を指定できない
XML
-
8
.NET上でエクセル上に罫線を引く
Visual Basic(VBA)
-
9
VBAでXMLを出力するプログラムを作成する際の名前空間接頭辞の付与の仕方について
Visual Basic(VBA)
-
10
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
11
ループ処理の際、最後だけ,"をつけたくない"
Java
-
12
VBでXMLファイルを作ると xmlns= が・・・
Visual Basic(VBA)
-
13
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
14
C#のXmlDocumentについて
Microsoft ASP
-
15
VBA XML の置換方法
XML
-
16
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
17
VB.NET 親フォームから子フォームのTextBoxに書き込みたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
CPUの考え方を教えてください ...
-
XSLTで固定長データファイルを...
-
TreeViewで複数ノードの選択は...
-
XML、XSLTの適応エラー(IEから...
-
eclipseへのxmlファイル追加
-
同じタグ名の項目取得
-
DelphiのTreeViewでの+ボタン...
-
MagpieRSSを使用して自分のHPに...
-
特殊記号が勝手にエスケープさ...
-
VBAの一括型宣言について
-
Access VBAでXMLが読み込めない
-
C#のツリービューでツリーノー...
-
■XSLT■固定文字を使ったループ...
-
XMLで要素が記述された順番に意...
-
VB2005 ツリービューに子ノード...
-
VB2005 TreeViewの任意ノード選択
-
SNMP ステータスポーリングと...
-
XMLファイルの作り方がわかりま...
-
XMLのHTMLへの変換 (初心者)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
XMLファイル内のデータ(値)を変...
-
VBAでXML文書のある特定タグ以...
-
XML文のid属性とclass属性について
-
VBAでXMLを出力するプログラム...
-
XMLの要素の内容の中に要素
-
XMLDocumentでスキーマを無視し...
-
LoadCML
-
VB6でXMLを作成しているのです...
-
C# GetElementsByTagNameで取得...
-
C# もしくはVB
-
C#でXMLの読み取り書き取りにつ...
-
XMLをエクセルに取り込むマクロ...
-
WebBrowser1.Document.Body.Inn...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
SNMP リンクダウンとノードダ...
-
XML、XSLTの適応エラー(IEから...
-
ルート要素ノードが2個ある場合?
おすすめ情報