書き換え前
<root>
<a>11</a>
<b>12</b>
<c>13</c>
</root>
↓
書き換え後
<root>
<a>11</a>
<b>10</b>
<c>13</c>
</root>
※bタグの値が書き換わっている。
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タグの値が書き換わったものが出力されるはずです。入力値の/や=での切り分け、入力チェックなどの機能をつければ望んでいるものができるかと思います。もっと良い実装方法もあるかもしれませんが…
perlでしたら以下のページに乗っているサンプルを組み合わせればできると思います。
具体的な実装(サンプル)まで示していただけると助かります。。。ただ、このページは参考になりますね。ありがとうございます。
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タグの値が書き換わったものが出力されるはずです。入力値の/や=での切り分け、入力チェックなどの機能をつければ望んでいるものができるかと思います。もっと良い実装方法もあるかもしれませんが…
頂いたサンプルをベースにツールを作れました。ありがとうございました。
頂いたサンプルをベースにツールを作れました。ありがとうございました。