我有以下xml片段,我试图使用JDOM检索第一个元素,但我得到nullpointer exception.please帮助我,如果有人知道。
<db1:customer xmlns:db1="http://www.project1.com/db1">
<db1:customerId>22</db1:customerId>
<db1:customerName>PRASAD44</db1:customerName>
<db1:address>Chennai</db1:address>
<db1:email>pkk@gmail.com</db1:email>
<db1:lastUpdate>2014-08-01T00:00:00+05:30</db1:lastUpdate>
<db1:nameDetail>BSM_RESTeter</db1:nameDetail>
<db1:phoneBiz>9916347942</db1:phoneBiz>
<db1:phoneHome>9916347942</db1:phoneHome>
<db1:phoneMobile>944990031</db1:phoneMobile>
<db1:rating>22</db1:rating>
</db1:customer>
这就是我在做什么,
SAXBuilder builder = new SAXBuilder();
File xmlFile = new File("CommonFiles/file.xml");
Document doc = (Document) builder.build(xmlFile);
Element rootNode = doc.getRootElement();
Element customerid = rootNode.getChild("sure:customerId");
System.out.println("customerid ======"+customerid);
print语句显示为null。
答案 0 :(得分:1)
在处理包含名称空间的XML时,您需要使用适合您文档的Namespace
实例。在这种情况下,您有:
<db1:customer xmlns:db1="http://www.project1.com/db1">
此处的命名空间为http://www.project1.com/db1
,前缀为db1
。
在JDOM中,您可以使用以下命令创建对命名空间的引用:
Namespace db1 = Namespace.getNamespace("db1", "http://www.project1.com/db1");
现在,当您检索文档中的内容时,请使用:
Element customerid = rootNode.getChild("customerId", db1);
请注意,您使用Namespace对象获取内容,而不是元素的前缀(“customerId”没有“db1:”前缀