我試着使用XML標籤提取數據庫中的數據,但我保留收到此錯誤提取由標籤名從XML對象數據
'java.lang.String org.w3c.dom.Node.getNodeValue()' on a null object reference
不知道爲什麼它說的標籤爲空時,我有一個日誌在我嘗試提取數據之前的字符串,它看起來應該我相信。
<?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();
應用崩潰時,它試圖對得到的第一個元素節點值,任何幫助表示讚賞,並提前
感謝
上面的代碼是讀出的標籤名稱很可能是錯誤的。如果默認的'file.encoding'不是UTF-8(在Windows上是Cp1252),'s.getBytes()'會返回一個Windows-1252數據數組,但是由於XML沒有聲明編碼,它會默認爲UTF-8。代碼點127以上的任何字符將被亂碼,否則解析將失敗。切勿調用不帶'Charset'的getBytes()重載。使用's.getBytes(StandardCharsets.UTF_8)'。 –
嗨,我添加了你建議的代碼,但應用程序仍然崩潰,我連接到基於Linux的服務器,如果這有所作爲。 –
哪一個出現'null'?可能的重複[什麼是NullPointerException,以及如何解決它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) –