我试图使用xml标签从数据库中提取数据,但我不断收到此错误
'java.lang.String org.w3c.dom.Node.getNodeValue()' on a null object reference
在我尝试提取数据之前,当我记录字符串时,不确定为什么它说标记为null,看起来我应该相信它。
<?xml version="1.0" ?>
<database>
<account>
<id>1</id>
<fname>john</fname>
<lname>smith</lname>
<status>1</status>
</account>
</database>
这是我尝试从中提取数据的字符串的输出,这是我用来提取数据的代码。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();;
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse (new ByteArrayInputStream(s.getBytes()));
Element docEle = dom.getDocumentElement ();
NodeList nl = docEle.getElementsByTagName("account");
Element entry = (Element)nl.item(0);
Element id = (Element)entry.getElementsByTagName("id").item(0);
Element fname= (Element)entry.getElementsByTagName("fname").item(0);
Element lname = (Element)entry.getElementsByTagName("lname").item(0);
Element status= (Element)entry.getElementsByTagName("status").item(0);
user_id = id.getFirstChild().getNodeValue();
user_fname = fname.getFirstChild().getNodeValue();
user_lname = lname.getFirstChild().getNodeValue();
user_status = status.getFirstChild().getNodeValue();
当应用尝试从第一个元素获取节点值时,应用程序崩溃,任何帮助都表示赞赏并提前感谢
答案 0 :(得分:0)
您已启动&lt; account&gt;标签,但没有结束它。更改&lt; / user&gt;到&lt; / account&gt;
答案 1 :(得分:0)
管理好解决这个问题,这对任何有类似问题的人都有帮助。
能够从xml字符串中读取标记名称我执行了以下操作(s是xml字符串变量)
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(s));
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();;
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse(is);
Element docEle = dom.getDocumentElement ();
NodeList nl = docEle.getChildNodes();
if (nl != null) {
int length = nl.getLength();
for (int i = 0; i < length; i++) {
if (nl.item(i).getNodeType() == Node.ELEMENT_NODE) {
Element el = (Element) nl.item(i);
if (el.getNodeName().contains("account")) {
user_id = el.getElementsByTagName("id").item(0).getTextContent();
user_fname = el.getElementsByTagName("fname").item(0).getTextContent();
user_lname = el.getElementsByTagName("lname").item(0).getTextContent();
user_status = el.getElementsByTagName("status").item(0).getTextContent();
}
}
}
}
user_变量具有xml标记值