我正在使用JAXP编写XML序列化程序。我从JAR接收伪随机数据,我正在构建DOM树。我必须检查是否已将相同的元素插入树中;为了执行此控制,我正在尝试使用该方法:
Element e = myDocument.getElementById(ao.getId());
if (e == null) {
// element is not a duplicate
access.appendChild(authorizationObject);
}else{
// element already in the tree
}
所以,在我添加到我设置的树之前创建的每个元素中:
ao = a.getAuthorizationObject();
authorizationObject = myDocument.createElement("authorizationobject");
authorizationObject.setAttribute("id", ao.getId());
authorizationObject.setIdAttribute("id", true);
可能会发生在对象中,有时候我会得到两次(或更多)相同的元素。 问题是程序总是进入if指令。
我做错了什么? 提前感谢您的回复。
答案 0 :(得分:0)
您忘记将authorizationObject
附加到access
元素。您的代码应如下
authorizationObject = myDocument.createElement("authorizationobject");
authorizationObject.setAttribute("id", ao.getId());
authorizationObject.setIdAttribute("id", true);
System.out.println("AO.ID = " + ao.getId());
access.appendChild(authorizationObject);
// then only this Element will be appended to the document
if (myDocument.getElementById(ao.getId()) == null ) {
我看到你最后将授权对象附加到文档中。但是,它应该在document.getElementById()方法调用之前完成
希望这有帮助!