- ベストアンサー
Javaでxmlを扱う方法について
- JavaプログラミングでXMLを扱う方法について詳しく教えてください。
- XMLファイルをメモリに読み込み、指定の要素を書き換えて出力する方法を教えてください。
- javaプログラミングに詳しくないので、基本的な手順を教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
割と処理が面倒だったので、そのまま例を乗せてみます 例ではsample.xmlを入力ソースとして読み取ってid=10の場合のvalue値を変更してoutput.xmlに出力するサンプルです import java.io.File; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class XmlTest { public static void main(String[] args) throws Exception { Document document = DocumentBuilderFactory.newInstance() .newDocumentBuilder().parse(new File("sample.xml")); NodeList nodeList = document.getElementsByTagName("detail"); for (int i = 0; i < nodeList.getLength(); i++) if ("10".equals(getNodeByName(nodeList.item(i), "id").getTextContent())) getNodeByName(nodeList.item(i), "value").setTextContent("変えたい値"); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty("encoding", "UTF-8"); transformer.transform(new DOMSource(document), new StreamResult(new File("output.xml"))); } public static Node getNodeByName(Node node, String name) { for (Node child = node.getFirstChild(); child != null; child = child.getNextSibling()) if (name.equals(child.getNodeName())) return child; return null; } }
その他の回答 (2)
- titokani
- ベストアンサー率19% (341/1726)
- wormhole
- ベストアンサー率28% (1626/5665)
>基本的なJavaプログラミングだと思うのですが、javaに詳しくないので、 >ご教授いただけると嬉しいです。 XMLの操作は基本的なJavaプログラミングではないですよ。 結構面倒です。 http://www.atmarkit.co.jp/ait/series/2340/ あたりを参考にしてみてください。