jdom xpath定位带xmlns命名空间的节点
关键词:jdom xpath xmlns 命名空间 openjweb
在jdom中用 xpath定位节点通常采用以下方式:
XPath xpath=null;
Element anode = null;
SAXBuilder sb = new SAXBuilder();
Document doc = null;
try
{
doc = sb.build("xxx.xml");
}
catch(Exception ex)
{
return "解析xml失败!";
}
xpath = XPath.newInstance("/节点1/节点2[@属性1='值1']");
anode=(Element)xpath.selectSingleNode(doc);
但是在处理spring的bean文件时,发现这种方式定位不到想找的节点,下面是openjweb的core-service-demo.xml,现在要查找此文件里的hibernate配置,文件格式:
<?xml version="1.0" encoding="GB2312"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
......
<bean id="demosessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="demoDatasource" />
</property>
<property name="mappingResources">
<list>
<value>org/openjweb/core/entity/CommSubSystem.hbm.xml</value>
......
</list></property>
</bean>
</beans>
现在要通过程序查找list节点,但是按照下面的方式发现取不到list的Element:
xpath = XPath.newInstance("/beans/bean/property[@name='mappingResources']/list");
anode = (Element)xpath.selectSingleNode(doc );
后来从网上查找解决方案,发现是因为beans根节点带有xmlns命名空间。需要注册命名空间,见下面的代码:
xpath = XPath.newInstance("/ns:beans/ns:bean/ns:property[@name='mappingResources']/ns:list");
//ns是随便起的名字
xpath.addNamespace("ns","http://www.springframework.org/schema/beans");
anode = (Element)xpath.selectSingleNode(doc );
上面定义了一个ns命名空间,另外在xpath的查找字符串中,每级节点都要增加 ns:,采用这种方式就可以查找list节点了。
分享到:
相关推荐
NULL 博文链接:https://newtime.iteye.com/blog/437338
NULL 博文链接:https://langsheng.iteye.com/blog/542547
Jdom查找XML文件的所有节点内容,一个简单的递归算法
xpath读取XML节点 用jdom包
List itemList = doc.selectNodes("/ACCESOS/item/SOCIO"); //以上是dom4j+xpath的读取xml的写法
jdom jar包附带源码下载
JDOM是由以下几个包组成的: org.jdom包含了所有的xml文档要素的java类 org.jdom.adapters包含了与dom适配的java类 org.jdom.filter包含了xml文档的过滤器类 org.jdom....org.jdom.xpath包含了对xml文档xpath操作的类
xpathDemo.zip 一个用JDOM/Xpath解析xml的demo,网上看的大多只是在网页显示代码,自己综合做了个DEMO,附带资料
Jdom2 解析XML,代码简单精悍,上手比较容易。
JDOM是由以下几个包组成的: org.jdom包含了所有的xml文档要素的java类 org.jdom.adapters包含了与dom适配的java类 org.jdom.filter包含了xml文档的过滤器类 org.jdom....org.jdom.xpath包含了对xml文档xpath操作的类
JDOM解析同名多节点的XML,节点含多个属性。http返回流jdom直接获取流解析源代码
在jdom中,如何快速的定位某个节点或者属性?我们如何直接取得它的xpath?使用jdom-contrib.jar包可以实现这个功能
org.jdom.xpath 包含了对xml文档xpath操作的类三、JDOM 类说明 1、org.JDOM这个包里的类是你J解析xml文件后所要用到的所有数据类型。 Attribute CDATA Coment DocType Document Element EntityRef ...
JsoupXPath的节点对象JXNode不仅可以获取标签节点,还可以获取属性节点 HtmlCleaner是一个开源的Java语言的Html文档解析器。HtmlCleaner能够重新整理HTML文档的每个元素并生成结构良好(Well-Formed)的 HTML 文档。...
jdom源码+jdom.jar jdom源码+jdom.jar
jdom-1.0 jdom jdom-1.0,jdom解析xml
jdom-1.1.zip jdom-1.1.jar jdom.jar jdom库 jdom操作xml
Jdom教程. .
在工作中发现jdom生成xml标签如<taxML xmlns:xsi="http://www.worg/2001/XMLSchema-instance" xsi:type="Fb1"cnName="附表1" name="Fb1"version="SW5001-2006"> 不能用冒号的问题root.setAttribute("xsi:type", "fb1...
Java解析XML汇总DOM_SAX_JDOM_DOM4j_XPath 实例