gpt4 book ai didi

java - 为什么 getElementById 对我不起作用?在 Java 中

转载 作者:行者123 更新时间:2023-12-04 09:25:55 25 4
gpt4 key购买 nike

我正在尝试使用 Document 对象( org.w3c.dom.Document )在 Java 中通过 id 获取元素,但是当我使用函数时 getElementById(elementId)正在返回一个空值。 Document对象正在创建 好的,因为我使用 getElementByTags并且工作正常。
我的Java代码:

DocumentBuilder dbRespuesta0 = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document docRespuesta0 = dbRespuesta0.parse(new InputSource(new StringReader(context.getProperty("XML").toString())));
Element e = (Element) docRespuesta0.getElementById("ID_X");
我的 XML 的结构
<RESULT>
<TAG1 ID="A">

</TAG1>
<TAG1 ID="B">

</TAG1>
<TAG2 DIM="30" ID="C" SIZE="2">

</TAG2>
<TAG2 DIM="300" ID="ID_X" SIZE="2">
<TAG3 NUM="1">

</TAG3>
<TAG3 NUM="2">

</TAG3>
</TAG2>
</RESULT>
当我打印元素 e 时,我看到一个空值。我希望进入元素 e,下一个 XML:
<TAG2 DIM="300" ID="ID_X" SIZE="2">
<TAG3 NUM="1">

</TAG3>
<TAG3 NUM="2">

</TAG3>
</TAG2>

最佳答案

您需要调用setSchema(schema)定义一个 dom-schema,向模型解释属性 ID实际上是节点的ID。
来自 org.w3c.dom.Document 的 javadoc (https://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Document.html#getElementById(java.lang.String))

Element getElementById(String elementId)

Returns the Element that has an ID attribute with the given value. Ifno such element exists, this returns null . If more than one elementhas an ID attribute with that value, what is returned is undefined.The DOM implementation is expected to use the attribute Attr.isId todetermine if an attribute is of type ID.

Note: Attributes with the name "ID" or "id" are not of type ID unlessso defined.


注意最后两行(突出显示)!
属性必须明确定义为 ID,而不仅仅是命名为“ID”。
这个问题/答案给出了详细的解释,应该可以帮助你:
Java XML DOM: how are id Attributes special?

关于java - 为什么 getElementById 对我不起作用?在 Java 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63009095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com