[187] XMLについて
投稿者:神奈川
2007/02/20 02:13:25
件名を変更しました。
またXMLで解らない事が出てきてしまいました・・・
問題例を以下に記述します。
---あ.xml----
<愛 id=1>
<b>
<c>
</c>
</b>
<愛 ID=2>
</愛>
</愛>
------------
特定のタグの属性の下に
--
<k>
<愛 ID=7>あああ</愛>
</k>
を記述しそのタグ<愛>に属性を与えるというプログラムです。
☆例えば、あ.xmlの<愛 ID=2>の下に
<k>
<愛 ID=7>あああ</愛>
</k>
を加えたりするなどです。
ここで問題なのは、属性を作成するとエラーが発生してしまうということです。
以下に自作したプログラムを記述します。
static void selectionAppend() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new FileInputStream("あ.xml"));
NodeList list = doc.getElementsByTagName("愛");
for (int i = 0; i < list.getLength(); i++) {
Element node = (Element)list.item(i);
if (!(node instanceof Element))
continue;
String value = ((Element)node).getAttribute("ID"); //ここで対象属性名を指定し
if (value != null && value.equals("2")) { //ここで対象属性値を指定する
Node child1 = doc.createElement("k");
Node child2 = doc.createElement("愛");
//↑ここのタグに属性を追加したい、setAttribute("ID", "7");このメソッドを代入する
//のでしょうがどのように代入すればよろしいでしょうか。
Node child3 = doc.createTextNode("あああ");
child2.appendChild(child3);
child1.appendChild(child2);
node.appendChild(child1);
//↑ここでツリー構成は完了していることになるのでしょうか?できたとしたら、
//NodeList know = node.getElementsByTagName("愛");
//Element knowe = (Element)know.item(0);
//knowe.setAttribute("No", "8");
//こうするのでしょうが、
//解らなくなってしまったので、また質問しにきました。宜しくお願いします。
}
}
FileOutputStream out = new FileOutputStream("あ2.xml");
DOMSource src = new DOMSource(doc.getDocumentElement());
StreamResult dst = new StreamResult(out);
Transformer tfm = TransformerFactory.newInstance().newTransformer();
tfm.transform(src, dst);
out.close();
}