繁体   English   中英

为什么我收到NullPointerException错误

[英]Why Am I Getting NullPointerException Error

抱歉,我对Java知之甚少。 我被交给了这段代码来接管。 基本上,我在String[] patient = {eElement.getElementsByTagName("Name").item(0).getTextContent(), eElement.getElementsByTagName("ID").item(0).getTextContent(), eElement.getElementsByTagName("acquisitionDate").item(0).getTextContent(), eElement.getElementsByTagName("pages").item(0).getTextContent() };的行上得到一个NullPointerException String[] patient = {eElement.getElementsByTagName("Name").item(0).getTextContent(), eElement.getElementsByTagName("ID").item(0).getTextContent(), eElement.getElementsByTagName("acquisitionDate").item(0).getTextContent(), eElement.getElementsByTagName("pages").item(0).getTextContent() }; 当我运行代码时。

这是解析XML的块

//parse array of string arrays from xml file that represent the patient list we expect to see, needs to be sorted by acquisition date, in reverse chronological order.
File fxmlFile = new File("patientList.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fxmlFile);

doc.getDocumentElement().normalize(); //should not be necessary but recommended (http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work)

NodeList nList = doc.getElementsByTagName("patient");

String[][] retList = new String[nList.getLength()][4];

for(int i = 0; i < nList.getLength(); i++) {
Node nNode = nList.item(i);
Element eElement = (Element)nNode;
String[] patient = {eElement.getElementsByTagName("Name").item(0).getTextContent(), eElement.getElementsByTagName("ID").item(0).getTextContent(), eElement.getElementsByTagName("acquisitionDate").item(0).getTextContent(), eElement.getElementsByTagName("pages").item(0).getTextContent() };

retList[i] = patient;
}

这是Improts,不确定是否需要

package test.java.WebReview.Tests;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.Assert;
import main.java.WebReview.Pages.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

这是XML文件

<?xml version="1.0"?>
<patients>
<patient>
<acquisitionDate>2015-04-03T10:03:49.0000000</acquisitionDate>
<id>9876543230</id>
<name>autoTestLast30, autoTestFirst30</name>
<pages>3</pages>
</patient>
</patients>
eElement.getElementsByTagName("Name")

在您的示例中计算为null (并引发异常),请尝试:

eElement.getElementsByTagName("name") //case sensitive!

..这只是“冰山一角”,请注意所有标签名称中的大小写和拼写!

设置代码格式,使有问题的行占几行,这将使查明错误的位置或在调试器中运行变得更加容易。

检查标签,因为名称和名称,ID和ID不相同。

方法getElementsByTagName的参数区分大小写。 因此, “ Name”!=“ name”“ id”!=“ Id” 更改xml文件元素名称以匹配您的代码,或者更改代码中的值以匹配xml文件中元素的大小写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM