我正在尝试使用 Java 中的 Dom Parser 解析 XML 数据。
我成功解析了以下 XML 数据 -
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
我使用了HERE中的代码。
但是当我试图解析以下 XML 数据时 -
<body message="hello">
<mainData data1="XYZ" data2="ABC" data3="PQR"></mainData>
</body>
它给出了空指针异常。
两种 XML 都有不同的结构,第一个很常见,但第二个我不知道。
请帮助我使用 Java 解析第二种结构中的 XML。
我的代码是 -
try
{
String strUrl = "http://someurl";
URL url = new URL(strUrl);
InputStream inStream = url.openStream();
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(inStream);
NodeList nList = doc.getElementsByTagName("body");
for (int i = 0; i < nList.getLength(); i++)
{
Node nNode = nList.item(i);
if (nNode.getNodeType() == Node.ELEMENT_NODE)
{
Element eElement = (Element) nNode;
NodeList nListRoute = eElement.getElementsByTagName("mainData");
for (int j = 0; j < nListRoute.getLength(); j++)
{
Node nNodeRoute = nListRoute.item(j);
if (nNodeRoute.getNodeType() == Node.ELEMENT_NODE)
{
Element eElementRoute = (Element) nNodeRoute;
NodeList nlList = eElementRoute.getElementsByTagName("data1").item(0).getChildNodes();
Node nValue = (Node) nlList.item(0);
System.out.println("data1 : " + nValue.getNodeValue());
}
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
我得到了错误 -
java.lang.NullPointerException
在行“ NodeList nlList = eElementRoute.getElementsByTagName("data1").item(0).getChildNodes(); ”