用jdom和jaxen选择元素

时间:2012-03-15 10:18:30

标签: java jdom

我有以下xml

   <administration xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
      <students>
           <student name = 'alpha' number='s1111111'>
              <grades>
                 <grade course='beta'> 1 </grade>
              </grades>
      </students>
   </administration>

我使用以下JDOM代码,但它一直返回null。

reader.root指的是文档的根元素

 Element studentXmlElement = (org.jdom.Element) XPath.selectSingleNode(reader.root,    " administration/students/student[@number='s1111111']");    

但正如我所说,一旦我返回,studentXmlElement为null。

1 个答案:

答案 0 :(得分:1)

很少:学生标签没有关闭,xpath有一个前导空格。我认为这是错误的。

您的xml指定了命名空间,并且您的xpath选择不包含命名空间和前缀。 使用'xpath.addNamespace(java.lang.String前缀,java.lang.String uri)'方法将名称空间添加到xpath。

请注意,您的xml没有任何名称空间前缀。 在XPath中,没有“默认命名空间”这样的东西。空前缀始终解析为空名称空间URI。

请在此处参阅API以获取更多详细信息:http://www.jdom.org/docs/apidocs/org/jdom/xpath/XPath.html#addNamespace%28java.lang.String,%20java.lang.String%29