gpt4 book ai didi

java - 无法使用 DOM 解析器读取属性

转载 作者:行者123 更新时间:2023-12-01 18:20:29 25 4
gpt4 key购买 nike

我在读取链接属性时遇到问题,

这是我的 xml 的结构,

    <entry>
<updated>
<title>
<link href="">
</entry>

我设法正确读取日期和标题,但 linkhref 属性不起作用。

这是我的代码,

NodeList nList = doc.getElementsByTagName("entry");
System.out.println("============================");

for (int temp = 0; temp < nList.getLength(); temp++)
{
Node node = nList.item(temp);
System.out.println(""); //Just a separator
if (node.getNodeType() == Node.ELEMENT_NODE)
{
Element eElement = (Element) node;
System.out.println("Date : " + eElement.getElementsByTagName("updated").item(0).getTextContent());
System.out.println("Title : " + eElement.getElementsByTagName("title").item(0).getTextContent());

// The below code is for reading href attribute of link,
NodeList node1 = eElement.getElementsByTagName("link");
Element eElement1 = (Element) node1;
System.out.println(eElement1.getAttribute("href"));

}
}

我正在为链接的属性创建一个新的节点列表,但代码不起作用。

错误:

java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl cannot be cast to org.w3c.dom.Element
at Demo.main(Demo.java:45)

最佳答案

NodeList 不是 Element 并且无法(成功)转换为一个,因此此代码不起作用:

NodeList node1 = eElement.getElementsByTagName("link");
Element eElement1 = (Element) node1;

顾名思义,NodeList 是一个节点列表(在您的情况下,节点将是Element) 。所以这段代码适用于第一个链接:

NodeList list = eElement.getElementsByTagName("link");
Element eElement1 = (Element) list.item(0);

...因此您的 getAttribute 应该可以正常工作,因为 Element 具有 getAttribute

<小时/>

旁注:如果您的库支持较新的查询函数,您也可以这样做:

String href = ((Element)eElement.querySelector("entry")).getAttribute("href");

...因为 querySelector 仅返回第一个匹配项(不是列表)(如果没有匹配则返回 null;如果有可能,请在上面添加一个防护)。但我还不知道 querySelector 在浏览器之外的支持情况如何。

关于java - 无法使用 DOM 解析器读取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27779941/

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