- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用Java解析名称空间的方法
?2009-06-30 13:54 ?佚名 ?赛迪网 ?我要评论() 本文介绍了Java中向名称空间映射提供前缀的三种不同方式。本文亦包含了示例代码以方便您编写自己的 NamespaceContext。
如果想要在 XPath 表达式中使用名称空间,必须提供对此名称空间 URI 所用前缀的链接。
前提条件和示例
本文所有的示例均使用如下这个XML文件:
清单1. 示例XML
这个 XML 示例包含三个在根元素内声明的名称空间,一个在此结构的更深层元素上声明的名称空间。您将可以看到这种设置所带来的差异。
这个 XML 示例的第二个有趣之处在于元素 booklist 具有三个子元素,均名为 book。但是第一个子元素具有名称空间 science,而其他子元素则具有名称空间 fiction。这意味着这些元素完全有别于 XPath。在接下来的这些例子中,您将可以看到这种特性产生的结果。
示例源代码中有一个需要注意之处:此代码没有针对维护进行优化,只针对可读性进行了优化。这意味着它将具有某些冗余。输出通过 System.out.println() 以最为简单的方式生成。在本文中有关输出的代码行均缩写为 “...”。
理论背景
名称空间究竟有何意义?为何要如此关注它呢?名称空间是元素或属性的标识符的一部分。元素或属性可以具有相同的本地名称,但是必须使用不同的名称空间。它们完全不同。请参考上述示例(science:book 和 fiction:book)。若要综合来自不同资源的 XML 文件,就需要使用名称空间来解决命名冲突。以一个 XSLT 文件为例。它包含 XSLT 名称空间的元素、来自您自己名称空间的元素以及(通常)XHTML 名称空间的元素。使用名称空间,就可以避免具有相同本地名称的元素所带来的不确定性。
名称空间由 URI(在本例中为 http://univNaSpResolver/booklist)定义。为了避免使用这个长字符串,可以定义一个与此 URI 相关联的前缀(在本例中为 books)。请记住此前缀类似于一个变量:其名称并不重要。如果两个前缀引用相同的 URI,那么被加上前缀的元素的名称空间将是相同的(请参见 清单 5 中的示例 1)。
XPath 表达式使用前缀(比如 books:booklist/science:book)并且您必须提供与每个前缀相关联的 URI。这时,就需要使用 NamespaceContext。它恰好能够实现此目的。
本文给出了提供前缀和 URI 之间的映射的不同方式。
在此 XML 文件中,映射由类似 xmlns:books=http://univNaSpResolver/booklist 这样的 xmlns 属性或 xmlns=http://univNaSpResolver/book(默认名称空间)提供。
提供名称空间解析的必要性
如果 XML 使用了名称空间,若不提供 NamespaceContext,那么 XPath 表达式将会失效。清单 2 中的示例 0 充分展示了这一点。其中的 XPath 对象在所加载的 XML 文档之上构建和求值。首先,尝试不用任何名称空间前缀(result1)编写此表达式。之后,再用名称空间前缀(result2)编写此表达式。
清单 2. 无名称空间解析的示例 0
private static void example0(Document example)
throws XPathExpressionException, TransformerException {
sysout(\n*** Zero example - no namespaces provided ***);
XPath xPath = XPathFactory.newInstance().newXPath();
...
NodeList result1 = (NodeList) xPath.evaluate(booklist/book, example,
XPathConstants.NODESET);
...
NodeList result2 = (NodeList) xPath.evaluate(
books:booklist/science:book, example, XPathConstants.NODESET);
...
}
输出如下所示。
清单 3. 示例 0 的输出
*** Zero example - no namespaces provi
您可能关注的文档
- 住房公积金专办员考试全部答案).doc
- 体会含义题学生版.doc
- 体育专业知识的试题汇总.doc
- 体育俱乐部管理复习题.doc
- 体育教案的常见书写形式.doc
- 体育术科考试大纲2015年.doc
- 体育比赛中的逻辑推理问题.doc
- 体育用品专卖店加盟流程分析.docx
- 体育科学系体育统计学课程标准.doc
- 体质健康测试各项目测试方法.doc
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
最近下载
- 4-1 中化泉州石化 3 万吨年干气脱硫制二甲基亚砜项目设备设计说明书(含塔设备计算说明、换热器设计结果、设备一览表).pdf
- 工程造价_横湖桥商业楼土建工程量清单报价.docx VIP
- 浙江师范大学行知学院 学生手册.pdf
- 2025年辽宁沈阳市文体旅产业发展集团有限公司招聘笔试参考题库附带答案详解.pdf
- 川崎病患儿的护理课件.pptx VIP
- 2024年东莞市东华高级中学自主招生数学试卷附答案解析 .pdf
- 中医馆客服知识培训课件.pptx
- 辽宁沈阳市文体旅产业发展有限公司招聘笔试题库2025.pdf
- 全国公开课大赛一等奖小学一年级下册数学人教版《七巧板》课件.pptx
- 辽宁沈阳市文体旅产业发展集团有限公司招聘笔试题库2025.pdf
文档评论(0)