gpt4 book ai didi

Java:解析 XML 文件时出现问题

转载 作者:行者123 更新时间:2023-11-30 09:49:48 26 4
gpt4 key购买 nike

我有以下 XML,我正在尝试打印某些节点的值。例如,使用以下代码我想打印

 NodeList list = doc.getElementsByTagName("photo");
element = (Element)list.item(0);
list = element.getChildNodes();
System.out.println(list.item(0).getNodeName());
System.out.println(list.item(0).getNodeValue());

我明白了

null
#text

代替“title”和“bigfish live 200812”

我做错了什么?谢谢

<?xml version="1.0" encoding="utf-8" ?> 
<rsp stat="ok">
<photo id="2882550369" secret="21054282c8" server="3106" farm="4" dateuploaded="1222202793" isfavorite="0" license="0" safety_level="0" rotation="0" views="5" media="photo">
<owner nsid="64878451@N00" username="fishthemusic" realname="masayoshi yamamiya" location="kawasaki, japan" iconserver="4" iconfarm="1" />
<title>bigfish live 200812</title>
<description>photo by Kazuhiro Nakamura</description>
<visibility ispublic="1" isfriend="0" isfamily="0" />
<dates posted="1222202793" taken="2008-09-24 05:46:33" takengranularity="0" lastupdate="1222998937" />
<editability cancomment="1" canaddmeta="0" />
<publiceditability cancomment="1" canaddmeta="0" />
<usage candownload="1" canblog="1" canprint="0" canshare="1" />
<comments>0</comments>
<notes />
<tags>
<tag id="314160-2882550369-80673" author="64878451@N00" raw="bigfish" machine_tag="0">bigfish</tag>
<tag id="314160-2882550369-5558" author="64878451@N00" raw="live" machine_tag="0">live</tag>
<tag id="314160-2882550369-29726586" author="64878451@N00" raw="upcoming:event=1167424" machine_tag="1">upcoming:event=1167424</tag>
</tags>
<urls>
<url type="photopage">http://www.flickr.com/photos/fishthemusic/2882550369/</url>
</urls>
</photo>
</rsp>

最佳答案

photo 元素中有文本节点,在下面的示例中标记为 XXXX。您将获得此文本节点。请注意,可能有多个相邻的文本节点。您需要找到第一个具有 Element 类型的节点才能获取您的 owner 元素。

<photo ...>XXXX 
XXXX<owner nsid="64878451@N00" ... />

试试这个:

NodeList list = doc.getElementsByTagName("photo");
element = (Element)list.item(0);
list = element.getChildNodes();

int ix = 0;
while (ix < list.getLength() && list.item(ix).getNodeType() != Node.ELEMENT_NODE) {
ix++;
}

// now ix points to your first element node (if there was one)

System.out.println(list.item(ix).getNodeName());
System.out.println(list.item(ix).getNodeValue());

顺便说一句,元素的“nodeValue”是null,所以你应该看到

owner
null

作为输出。另见 http://download.oracle.com/javase/6/docs/api/org/w3c/dom/Node.html了解详情。 (它还表明 #text 是文本节点的 nodeName,正是您得到的)。

关于Java:解析 XML 文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5568822/

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