1

我有以下 xml 片段,我试图从中检索使用 JDOM 的第一个元素,但我得到空指针异常。如果有人知道,请帮助我。

<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 语句显示为空。

4

1 回答 1

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);

请注意,您使用命名空间对象获取内容,而不是元素的前缀(“customerId”没有“db1:”前缀

于 2014-10-28T10:42:41.650 回答