如何使用JDom检索带前缀的子元素

时间:2014-10-28 08:59:58

标签: java xml jdom-2

我有以下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。

1 个答案:

答案 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:”前缀