用XPath解析XML文档(二)
来源:互联网 发布:算法分析教材 编辑:程序博客网 时间:2024/04/29 17:13
用JDOM XPath类解析
JDOM API类支持XPath表达式从XML文档定位节点。JDOM XPath类的一些方法列在下表:
XPath Class Method
Description
selectSingleNode
用于匹配XPath来定位单结点。
selectNodes
用于匹配XPath来定位结点集。
addNamespace
通过增加命名空间来匹配含有命名空间前缀的XPath。
在本节中,用JDOM XPath类从XML示例文档catalog.xml定位节点的过程将会被讨论。被select方法定位的结点被修改,被修改的文档输出成XML文档。首先,导入JDOM的包org.jdom.xpath
import org.jdom.xpath.*;
创建一个SAXBuilder
SAXBuilder saxBuilder =
new SAXBuilder("org.apache.xerces.parsers.SAXParser");
用SAXBuilder解析XML文档catalog.xml:
org.jdom.Document jdomDocument =
saxBuilder.build(xmlDocument);
xmlDocument是XML文档catalog.xml的java.io.File代表,静态方法selectSingleNode(java.lang.Object context, String XPathExpression)用一个特定的XPath表达式定位一个单结点。如果超过一个结点匹配XPath表达式,则第一个结点被选择。用XPath定位一个journal的article元素属性结点level,并将journal属性结点title设置为Java Technology,将article元素属性结点date设置成January-2004。
org.jdom.Attribute levelNode =
(org.jdom.Attribute)(XPath.selectSingleNode(
jdomDocument,
"/catalog//journal[@title='JavaTechnology']" +
"//article[@date='January-2004']/@level"));
则level属性值Advanced被定位,修改level结点。
levelNode.setValue("Intermediate");
selectSingleNode方法也可以用来在XML文档中定位结点。作为示例,选择一个title结点,用XPath定位结点。
org.jdom.Element titleNode =
(org.jdom.Element) XPath.selectSingleNode( jdomDocument,
"/catalog//journal//article[@date='January-2004']/title");
title结点值Design service-oriented architecture frameworks with J2EE technology被定位,修改title结点。
titleNode.setText(
"Service Oriented Architecture Frameworks");
静态方法selectNodes(java.lang.Object context, String XPathExpression)选择XPath指定的所有结点。定位journal的所有article结点,并将journal的属性title设置为Java Technology。
java.util.List nodeList =
XPath.selectNodes(jdomDocument,
"/catalog//journal[@title='Java Technology']//article");
修改article结点,添加属性到article结点。
Iterator iter=nodeList.iterator();
while(iter.hasNext()) {
org.jdom.Element element =
(org.jdom.Element) iter.next();
element.setAttribute("section", "Java Technology");
}
JDOM XPath类支持定位含有命名空间前缀的结点。定位有命名空间的结点,添加命名空间到XPath:
XPath xpath =
XPath.newInstance(
"/catalog//journal:journal//article/@journal:level");
xpath.addNamespace("journal",
"http://www.w3.org/2001/XMLSchema-Instance"
);
如上,则前缀为journal的命名空间添加到XPath对象。定位包含命名空间前缀的结点。
levelNode = (org.jdom.Attribute)
xpath.selectSingleNode(jdomDocument);
属性结点journal:level被定位。修改此结点:
levelNode.setValue("Advanced");
Java程序JDomParser.java被用来从XML文档catalog.xml选择结点。在本节,介绍了用JDOM的XPath类的select方法从一个XML文档中定位结点的过程。定位的结点被修改,被修改的文档通过XMLOutputter类输出为一个XML文档。catalog-modified.xml就是此输出的XML文档。
结论
在本教程中,用XPath解析了一个XML文档。XPath仅用来定位结点。在本教程中讨论的XPath API不是用来用XPath为XML文档修改结点值的。为了修改结点的值,org.w3c.dom包的setter方法是必须的。
- 用XPath解析XML文档(二)
- XPath 文档 解析XMl
- xpath解析xml文档
- 用XPath解析XML文档(一)
- 利用XPath解析XML文档
- XPath 解析xml文档简单实用例子
- 日常小结-XPath用于解析XML文档
- java---dom4j+xpath演示解析XML文档
- 使用XPath语言解析XML文档
- 用JDOM+XPATH解析XML
- 用XPath解析XML文件
- xpath读取xml文档
- 使用dom4j解析xml文档以及用XPath实现相关的操作
- Asp.Net(C#)利用XPath解析XML文档示例
- Asp.Net(C#)利用XPath解析XML文档示例
- XML文档解析DOM、SAX、JDOM、DOM4j、XPath
- XML文档解析DOM、SAX、JDOM、DOM4j、XPath
- DOM4J+XPath 解析XML
- 如何生成以及导入X.509证书
- 数据仓库建模与ETL实践技巧
- 级联菜单二
- 怎么样在第一个窗体弹出的第二个窗体上,在关闭第二个窗体时刷新第一个窗体
- 如何在tomcat中启动SSL并使用X.509证书
- 用XPath解析XML文档(二)
- 用 Photoshop 提亮灰暗美女照片
- sun.rmi.activation.execPolicy警告
- 今年下半年我该做好的几件事情
- 水晶报表"System.Runtime.InteropServices.COMException 拒绝访问" 解决办法
- 一个男人至少要做的十件事
- 如何删除SQL Server下注册的服务器
- 关于Spring的一点思索.
- 微软的JavaScript,Post的实例(XMLHTTP)