Loading...

特定のタグを消したい

Javaです。
「XMLから特定のタグだけを消して、その子のノードはそのままにしたい」
順繰りみていきながら、特定のタグで特定なクラス名だけを削除するという実装にしています。
むずかしかったのはその子の要素をそのままにしたいので、子のクローンを用意して、消したいノードの場所に次々と足すということをしています。気がついたらなるほどねということのなのでしょうけども。

はじめ子のクローンでなくそのもので足していたったら、JVMがぽこーんと落ちたので(正確には、JavaFXの上のHTMLEditorなのですが) ようやくクローンしないといけないことに気がついたのでした。


/** * * @param document * @param rootNode * @param tag * @param className */ public static void removeNodeByTagNameAndClassName(Document document, Node rootNode, String tag, String className) { NodeList nodeList = rootNode.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); removeNodeByTagNameAndClassName(document, node, tag, className); if (Node.ELEMENT_NODE == node.getNodeType()) { Element element = (Element) node; Attr attr = element.getAttributeNode("class"); if (element.getTagName().toUpperCase() .equals(tag.toUpperCase()) && attr != null && attr.getValue().equals(className)) { NodeList nodeList2 = element.getChildNodes(); Node parent = element.getParentNode(); for (int j = 0; j < nodeList2.getLength(); j++) { Node newChild = nodeList2.item(j).cloneNode(true); parent.insertBefore(newChild, element); } parent.removeChild(element); } } } }
リアクション: 
xml 5783049087934036769

コメントを投稿

ホーム item

このブログを検索

Random Posts

Popular Posts

Labels

ADS