无法使getElementById()方法在java序列化程序中正常工作

时间:2013-11-27 14:27:16

标签: java xml dom jaxp

我正在使用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指令。

您可以找到所有程序代码here和DTD here供您参考。

我做错了什么? 提前感谢您的回复。

1 个答案:

答案 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()方法调用之前完成

希望这有帮助!