人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

XMLデータのあるタグの値を書き換えたいと思っています。「/root/b = 10」のように指定すると、以下のように書き換えてくるツール・実装を探しています。Javaがベストですが、他の言語でも構いませんので、サンプルがあれば教えて頂けますか。

書き換え前
<root>
<a>11</a>
<b>12</b>
<c>13</c>
</root>

書き換え後
<root>
<a>11</a>
<b>10</b>
<c>13</c>
</root>
※bタグの値が書き換わっている。

●質問者: er7
●カテゴリ:コンピュータ インターネット
✍キーワード:Java root XML タグ データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● taneushi
●20ポイント

perlでしたら以下のページに乗っているサンプルを組み合わせればできると思います。

http://www.web-ware.org/cgi/npindex/47/open_view.html

◎質問者からの返答

具体的な実装(サンプル)まで示していただけると助かります。。。ただ、このページは参考になりますね。ありがとうございます。


2 ● kronecker
●50ポイント ベストアンサー

http://www.hellohiro.com/xmldom.htm

http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000956.html

あたりを参考にして作ってみました。入力チェックとかは全くやってません。

import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

class ParseTest{
 public static void main(String[] args){
 try {
 // DOM作成
 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 DocumentBuilder builder = factory.newDocumentBuilder();
 Document doc = builder.parse(new File(args[0]));

 // DOMの修正
 Node root = doc.getElementsByTagName(args[1]).item(0);
 Node child = ((Element)root).getElementsByTagName(args[2]).item(0);
 child.replaceChild(doc.createTextNode(args[3]), child.getFirstChild());

 // 出力
 StringWriter stringWriter = new StringWriter();
 StreamResult streamResult = new StreamResult(stringWriter);
 DOMSource domSource = new DOMSource(doc);
 TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
 Transformer transformer = transformerFactory.newTransformer(); 
 transformer.transform(domSource, streamResult);
 System.out.println(stringWriter.toString());
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
}

コンパイル後、

>java ParseTest xmlファイル名 root b 10

とやればbタグの値が書き換わったものが出力されるはずです。入力値の/や=での切り分け、入力チェックなどの機能をつければ望んでいるものができるかと思います。もっと良い実装方法もあるかもしれませんが…

◎質問者からの返答

頂いたサンプルをベースにツールを作れました。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ