Java API编写自己的NamespaceContext

冒牌凉粉

冒牌凉粉

2016-02-20 01:01

下面图老师小编要跟大家分享Java API编写自己的NamespaceContext,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

如果想要在 XPath 表达式中使用名称空间,必须提供对此名称空间 URI 所用前缀的链接。本文介绍了向名称空间映射提供前缀的三种不同方式。本文亦包含了示例代码以方便您编写自己的 NamespaceContext。

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

前提条件和示例

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

本文所有的示例均使用如下这个XML文件:

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

清单1. 示例XML

?xml version="1.0" encoding="UTF-8"?books:booklist  xmlns:books="http://univNaSpResolver/booklist"  xmlns="http://univNaSpResolver/book"  xmlns:fiction="http://univNaSpResolver/fictionbook"  science:book xmlns:science="http://univNaSpResolver/sciencebook"titleLearning XPath/titleauthorMichael Schmidt/author  /science:book  fiction:booktitleFaust I/titleauthorJohann Wolfgang von Goethe/author  /fiction:book  fiction:booktitleFaust II/titleauthorJohann Wolfgang von Goethe/author  /fiction:book/books:booklist

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

这个 XML 示例包含三个在根元素内声明的名称空间,一个在此结构的更深层元素上声明的名称空间。您将可以看到这种设置所带来的差异。

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

这个 XML 示例的第二个有趣之处在于元素 booklist 具有三个子元素,均名为 book。但是第一个子元素具有名称空间 science,而其他子元素则具有名称空间 fiction。这意味着这些元素完全有别于 XPath。在接下来的这些例子中,您将可以看到这种特性产生的结果。

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

示例源代码中有一个需要注意之处:此代码没有针对维护进行优化,只针对可读性进行了优化。这意味着它将具有某些冗余。输出通过 System.out.println() 以最为简单的方式生成。在本文中有关输出的代码行均缩写为 ...。

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

理论背景

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

名称空间究竟有何意义?为何要如此关注它呢?名称空间是元素或属性的标识符的一部分。元素或属性可以具有相同的本地名称,但是必须使用不同的名称空间。它们完全不同。请参考上述示例(science:book 和 fiction:book)。若要综合来自不同资源的 XML 文件,就需要使用名称空间来解决命名冲突。以一个 XSLT 文件为例。它包含 XSLT 名称空间的元素、来自您自己名称空间的元素以及(通常)XHTML 名称空间的元素。使用名称空间,就可以避免具有相同本地名称的元素所带来的不确定性。

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

名称空间由 URI(在本例中为 http://univNaSpResolver/booklist)定义。为了避免使用这个长字符串,可以定义一个与此 URI 相关联的前缀(在本例中为 books)。请记住此前缀类似于一个变量:其名称并不重要。如果两个前缀引用相同的 URI,那么被加上前缀的元素的名称空间将是相同的(请参见 清单 5 中的示例 1)。

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

XPath 表达式使用前缀(比如 books:booklist/science:book)并且您必须提供与每个前缀相关联的 URI。这时,就需要使用 NamespaceContext。它恰好能够实现此目的。

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

本文给出了提供前缀和 URI 之间的映射的不同方式。

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

在此 XML 文件中,映射由类似 xmlns:books="http://univNaSpResolver/booklist" 这样的 xmlns 属性或 xmlns="http://univNaSpResolver/book"(默认名称空间)提供。

展开更多 50%)
分享

猜你喜欢

Java API编写自己的NamespaceContext

Web开发
Java API编写自己的NamespaceContext

Java Transaction API概述

编程语言 网络编程
Java Transaction API概述

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java中关于XML的API

Java JAVA基础
Java中关于XML的API

java api之实现(下)

编程语言 网络编程
java api之实现(下)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

javascript 编写自己的框架

Web开发
javascript 编写自己的框架

利用java Api打印JTable

编程语言 网络编程
利用java Api打印JTable

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

让你的PPT 3秒钟能被人看懂!

让你的PPT 3秒钟能被人看懂!

Java教程:如何实现FTP功能

Java教程:如何实现FTP功能
下拉加载更多内容 ↓