使用XPath定位XML文档节点
在处理XML文档解析时,我们有多种方法,如文档对象方法、推方法和拉方法,它们分别体现在DOM、SAX和StAX这三种API中。这些API都能检查文档的格式正确性和有效性,但在访问文档节点的机制上各有不同。SAX和StAX API只能按文档顺序访问节点,但内存使用效率高;DOM API能随机访问节点,但内存处理开销较大。
1. 理解XPath表达式
XPath是一种用于定位XML文档中节点集的语言。它基于一个抽象数据模型,专注于XML文档的核心信息内容,忽略所有与语法标记相关的信息。XPath将XML文档视为各种节点类型的树,如元素节点、属性节点和文本节点。XPath语言提供XPath表达式作为定位XML文档中节点集的主要语法结构。
1.1 简单示例
考虑以下简单的XML文档:
<catalog >
<journal title="XML" />
<journal title="Java Technology" />
</catalog>
对于XPath表达式 /catalog/journal
,可能会有人将其与文件系统路径类比,直觉上认为它指向文档中的第一个 journal
元素。但实际上,这个表达式会选择包含两个 journal
元素的节点集。因为在文件系统中,一个目录下通常只有一个同名文件夹,但XML文档节点并非如此。更恰当的理解是,XPath表达式的每个组件就像