
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/03/28 14:52
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 3個のfileのセルデータを1個のfileのセルに貼り付けるVBAコードですが。 1 2023/02/20 09:21
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでXML文書のある特定タグ以...
-
CPUの考え方を教えてください ...
-
複数のxmlファイルの合体
-
html→xmlの変換
-
xmlはどんな用途で使われている
-
RSSファイルの拡張子はどれが正...
-
昔Winnyってありましたけど、あ...
-
HTTPステータス 404 - There is...
-
東芝のDynabookなのですがアン...
-
ツリーでのアイコンの設定
-
このエラー、何とかなりません...
-
複数のマックPCによる数値計算...
-
VBSでxmlの値を書き換えたい
-
C#で使用中のファイルに別のフ...
-
バッチファイルでテキストファ...
-
二つの XML 文書を結合する方法...
-
XML::LibXMLのfindnodes()で、...
-
C# TreeView 効率良いノード追...
-
ルート要素ノードが2個ある場合?
-
xmlのテキストにリンクを張りた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
VBAでXMLを出力するプログラム...
-
XMLファイル内のデータ(値)を変...
-
VBAでXML文書のある特定タグ以...
-
VB6でXMLを作成しているのです...
-
XMLの要素の内容の中に要素
-
C#でXMLファイルの情報にアクセ...
-
xmlでコンテンツを複数表示させ...
-
LoadCML
-
C# もしくはVB
-
指定した属性値を持つ要素に追...
-
XMLをエクセルに取り込むマクロ...
-
XMLDocumentでスキーマを無視し...
-
XPATHについての質問です。以下...
-
XMLをXSLTで変換するとき、XML...
-
C# GetElementsByTagNameで取得...
-
C#でXMLの読み取り書き取りにつ...
-
XML文のid属性とclass属性について
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
おすすめ情報