次のようなxml構造を作成しようとしています:
<OuterMostElement>
<NestedSet>
<Element></Element>
<Element></Element>
</NestedSet>
</OuterMostElement>
ドキュメントフラグメントcreateNestedSet
を渡すこの構造を作成するために、メソッドを2回続けて呼び出しています。<OuterMostElement>
<OuterMostElement>
<NestedSet>
<Element></Element>
</NestedSet>
<NestedSet>
<Element></Element>
</NestedSet>
</OuterMostElement>
メソッドは次のとおりです。
public static void createNestedSet(DocumentFragment df) {
if (oTargetLineProperties.isRendered()) {
Document doc = df.getOwnerDocument();
Element newParentElem = null;
newParentElem = createTagIfAbsent(doc, "somenamespace", "NestedSet");
Element newElem = null;
newElem = doc.createElementNS("someNameSpace",
"Element");
newParentElem.appendChild(newElem);
((XMLElement)df.getFirstChild()).appendChild(newParentElem);
}
}
ヘルパーメソッド createTagIfAbsent
は次のとおりです。
private static Element createTagIfAbsent(Document doc, String nameSpace, String tagName) {
Element newParentElem;
NodeList nodes = doc.getElementsByTagName(tagName);
//Already contains tag . So just return the existing one
if(nodes!=null && nodes.getLength() > 0){
newParentElem = (Element)nodes.item(0) ;
}else{
newParentElem = doc.createElementNS(nameSpace,tagName);
}
return newParentElem;
}
NestedSet
タグが存在しない場合にのみタグを作成するという考えが正しく機能しないのはなぜですか?