Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中的Dom解析_Android_Dom_Xml Parsing - Fatal编程技术网

Android中的Dom解析

Android中的Dom解析,android,dom,xml-parsing,Android,Dom,Xml Parsing,如果我分析包含一些文本的标记,我会得到一个空指针异常 我的RSS提要如下: <quaddeals_conditions><p>Limit one QuadDeal</p></quaddeals_conditions> “name”是否不为空?我看你没有检查过。 如果可能的话,比较另一种方式是很好的编码实践: if(“quaddeals\u条件”.equalsIgnoreCase(名称)) 因此,即使“name”为NULL,也不会得到NullPoi

如果我分析包含一些文本的标记,我会得到一个空指针异常

我的RSS提要如下:

<quaddeals_conditions><p>Limit one QuadDeal</p></quaddeals_conditions>
“name”是否不为空?我看你没有检查过。 如果可能的话,比较另一种方式是很好的编码实践:

if(“quaddeals\u条件”.equalsIgnoreCase(名称))

因此,即使“name”为NULL,也不会得到NullPointerException。
在访问某个对象成员之前,请始终检查NOTNULL。

元素中有一个元素

因此,检索所有quaddeals,然后迭代每个quaddeals并从中检索p元素:

DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(this.inputStream);
Element root = dom.getDocumentElement();

// snip

NodeList items = root.getElementsByTagName("quaddeals_conditions");
for (int i = 0; i < items.getLength(); i++) {
            Node item = items.item(i);
            NodeList properties = item.getChildNodes();
            for (int j = 0; j < properties.getLength(); j++) {
                Node property = properties.item(j);
                String name = property.getNodeName();
                if (name.equalsIgnoreCase("p")) {
                    property.getFirstChild().getNodeValue(); // Your paragraph data
                }
            }
}
DocumentBuilder=factory.newDocumentBuilder();
文档dom=builder.parse(this.inputStream);
Element root=dom.getDocumentElement();
//剪断
nodelistitems=root.getElementsByTagName(“quaddeals_条件”);
对于(int i=0;i

希望这有帮助。

你能发布你的Logcat消息和一些代码的详细解释吗?01-24 20:04:24.858:VERBOSE/Exception ee(447):java.lang.NullPointerException:println需要消息如果你
Log.x()
不是字符串的东西,你会得到“println需要消息”错误。始终添加
.toString()
如果对象是唯一的参数:
Log.d(TAG,myNode)
将失败,
Log.d(TAG,myNode.toString())
起作用,
Log.d(TAG,Here:+myNode)
也起作用,因为很明显您正在构建字符串。因此,您得到的错误来自日志;)我在解析dom时总是遇到这种情况,并且认为您有正确的方法。他可能需要降低几个级别,但我相信你已经向他展示了光明;)段落本身是一个元素(在quaddeals元素内部)。您应该检查您的name变量是否不为null(使用调试器、日志输出),我也不明白为什么要将NullPointer与println方法结合使用。你能发布受影响的代码行吗?也许例外情况发生在其他地方。
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(this.inputStream);
Element root = dom.getDocumentElement();

// snip

NodeList items = root.getElementsByTagName("quaddeals_conditions");
for (int i = 0; i < items.getLength(); i++) {
            Node item = items.item(i);
            NodeList properties = item.getChildNodes();
            for (int j = 0; j < properties.getLength(); j++) {
                Node property = properties.item(j);
                String name = property.getNodeName();
                if (name.equalsIgnoreCase("p")) {
                    property.getFirstChild().getNodeValue(); // Your paragraph data
                }
            }
}