gpt4 book ai didi

java - 在 Java 中查找没有正确命名空间的节点中的元素

转载 作者:IT老高 更新时间:2023-10-28 20:59:05 25 4
gpt4 key购买 nike

所以我在这里声明了一个 xml 文档:

DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder();
StringReader reader = new StringReader(s);
InputSource inputSource = new InputSource(reader);
doc_ = dBuilder.parse(inputSource);

然后我有一个函数,我在其中传递一个字符串,我想将它与我的 xml 中的一个元素匹配:

void foo(String str)
{
NodeList nodelist = doc_.getDocumentElement().getElementsByTagName(str);
}

问题是当 str 进来时它没有任何类型的命名空间,所以我要测试的 xml 将是:

<Random>
<tns:node />
</Random>

str 将是节点。所以 nodelist 现在为空,因为它期望 tns:node 但我传入了 node。而且我知道忽略 namespace 不好,但在这种情况下它很好。我的问题是我不知道如何在忽略命名空间的同时搜索节点中的元素。我也想过将命名空间添加到传入的 str 中,但我也不知道该怎么做。

任何帮助将不胜感激,

谢谢,-乔什

最佳答案

为了匹配名称为“str”的所有节点,无论命名空间如何,请使用以下命令:

NodeList nodes = doc.getDocumentElement().getElementsByTagNameNS("*", str);

通配符“*”将匹配任何命名空间。见 Element.getElementsByTagNameNS(...) .

编辑:此外,@Wheezil 如何在评论中正确说明,您必须调用 DocumentBuilderFactory.setNamespaceAware(true) 才能使其工作,否则命名空间将不会被检测到。

关于java - 在 Java 中查找没有正确命名空间的节点中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4692605/

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