我在阅读链接属性时遇到问题
这是我的xml的结构,
<entry>
<updated>
<title>
<link href="">
</entry>
我设法正确阅读了日期和标题,但href
的{{1}}属性无效。
这是我的代码,
link
我正在为链接的属性创建一个新的节点列表,但代码无效。
错误:
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"));
}
}
答案 0 :(得分:2)
NodeList
不是Element
,也不能投放到一个(成功),因此此代码无法正常工作:
NodeList node1 = eElement.getElementsByTagName("link");
Element eElement1 = (Element) node1;
顾名思义,NodeList
是列表的节点(在您的情况下,节点将是Element
s)。因此,此代码适用于第一个link
:
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
的程度如何。
答案 1 :(得分:2)
// The below code is for reading href attribute of link,
NodeList node1 = eElement.getElementsByTagName("link");
Element eElement1 = (Element) node1;
NodeList
会为您提供Node
对象而不是Element
,您可以获得如下的href值,
String hrefValue = nodeList.item(0).
getAttributes().getNamedItem("href").getNodeValue();