gpt4 book ai didi

java - Android rss 无法解析带有属性的 XML

转载 作者:行者123 更新时间:2023-12-01 15:11:12 24 4
gpt4 key购买 nike

Document doc = getDomElement(response); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
Element e = (Element) nl.item(i);
String name = getValue(e, KEY_NAME);
String description = getValue(e, KEY_DESC);
Log.e("description:", description);
}

public String getValue(Element item, String str) {
NodeList n = item.getElementsByTagName(str);
return this.getElementValue(n.item(0));
}

public final String getElementValue(Node elem) {
Node child;
if (elem != null) {
if (elem.hasChildNodes()) {
for (child = elem.getFirstChild(); child != null; child = child.getNextSibling()) {
if ((child.getNodeType() == Node.TEXT_NODE) || (child.getNodeType() == Node.ELEMENT_NODE) ) {
return child.getNodeValue();
}
}
}
}
return "";
}

在上面,响应是一个 XML rss feed,下面是一个子响应。发生的事情是我能够获得标题、发布、更新。但是当我使用 getValue(e, "content") 时,我得到空字符串。我还想知道作者姓名。

<entry>
<title>Title1</title>
<link rel="alternate" type="text/html" href="http://www.example.com" />
<id>ID</id>

<published>2012-09-08T18:45:40Z</published>
<updated>2012-09-08T18:43:01Z</updated>
<author>
<name>Author name</name>
<uri>http://www.example.com</uri>
</author>
<content type="html" xml:lang="en" xml:base="http://www.example.com/">
&lt;p&gt;Test Test</content>
</entry>

最佳答案

在代码中

public final String getElementValue(Node elem) {
Node child;
if (elem != null) {
if (elem.hasChildNodes()) {
for (child = elem.getFirstChild(); child != null; child = child.getNextSibling()) {
if ((child.getNodeType() == Node.TEXT_NODE) || (child.getNodeType() == Node.ELEMENT_NODE) ) {
return child.getNodeValue();
}
}
}
}
return "";
}

您仅从第一个子文本节点获取文本。内容可以分为多个文本节点。您可能希望从所有子文本节点收集文本。

public final String getElementValue(Node elem) {
Node child;
StringBuilder sb = new StringBuilder();
if (elem != null) {
if (elem.hasChildNodes()) {
for (child = elem.getFirstChild(); child != null; child = child.getNextSibling()) {
if ((child.getNodeType() == Node.TEXT_NODE) || (child.getNodeType() == Node.ELEMENT_NODE) ) {
sb.append(child.getNodeValue());
}
}
}
}
return sb.toString();
}

要获取“作者姓名”值,您需要首先在层次结构中下降到另一个级别,因为“姓名”标签嵌套在“作者”标签内。这意味着当您遍历顶级节点以找到“作者”节点,然后获取其子“名称”节点时,需要进行一些特殊处理。

关于java - Android rss 无法解析带有属性的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12338374/

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