仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2352|回复: 20
打印 上一主题 下一主题

[学习教程] 了解下JAVA的java中经由过程xpath处置含有定名空间

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:33:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢?
声明:以下的测试是用的jdk1.4.2,xalan7.0关于以下xml文档片段:<ML:MREMLxmlns:ML="MREML">
<EnvelopEntity>
<EnvelopID>GUID2006102000002</EnvelopID>
<EnvelopVersion>1.0.1R</EnvelopVersion>
<ExchangeTime>2006-10-2513:12:10</ExchangeTime>
<SendFrom>
<SFID>SOBEY_NEWS</SFID>
<SFDescription>SOBEY旧事体系</SFDescription>
</SendFrom>
<SendTo>
<STID>DAYANG_MAM</STID>
<STDescription>DAYANG媒资体系</STDescription>
</SendTo>
<Priority>2</Priority>
<EntityInfo>
<EntityID>REQUEST_ID_01</EntityID>
<EntityType>4</EntityType>
</EntityInfo>
<EntityInfo>
<EntityID>节目GUID</EntityID>
<EntityType>3</EntityType>
</EntityInfo>
<EntityInfo>
<EntityID>办理信息实体ID</EntityID>
<EntityType>2</EntityType>
</EntityInfo>
</EnvelopEntity>
</ML:MREML>
关于上述含有定名空间的xml文档,假如想经由过程xpath查找EnvelopID的值,有两种体例:1.经由过程使用xpath的函数local-name()
如上述查找内容的xpath表达式能够写为://*[local-name()=MREML]/EnvelopEntity/EnvelopID/text()
2.经由过程在java程序中处置上述文档的定名空间是界说的,假如要使xpath表达式能准确地被剖析必要在java程序中创建起prefix和uri两者的映照干系
publicstaticNodeparseXPath(Stringexpression,Objectobj,QNameqname)
throwsException{
javax.xml.xpath.XPathxpath=javax.xml.xpath.XPathFactory.newInstance().newXPath();
xpath.setNamespaceContext(getNamespaceContext());
if(qname.equals(XPathConstants.NODE))
return(Node)xpath.evaluate(expression,obj,qname);
returnnull;
}
publicstaticNamespaceContextgetNamespaceContext()throwsException{
returnnewNamespaceContext(){
publicStringgetNamespaceURI(Stringprefix){
/*
//一种体例:
//这里能够接纳设置文件的体例,先将所必要利用的xmlNamespace设置好,
//接纳注册的体例供给用利用,这类体例效力应当高一些,不必每次都要从文档中提取namespace
//不外没有第二种便利
Stringuri;
if(prefix.equalsIgnoreCase("ML"))
uri="MREML";
elseif(prefix.equalsIgnoreCase("RE"))
uri="http://herry.com.cn";
elseif(prefix.equalsIgnoreCase("RID"))
uri="ResourceID";
elseif(prefix.equalsIgnoreCase("RUI"))
uri="ResourceUniqueID";
elseif(prefix.equalsIgnoreCase("RMDI"))
uri="ResourceMetaDataInfo";
else
uri=null;
System.out.println(ParseXMLUtil.class+"::getNamespaceURI:prefix="+prefix);
returnuri;
*/
/*
//别的一种体例:经由过程PrefixResolver来提掏出prefix和Namespace的对应干系
finalPrefixResolverresolver=
newPrefixResolverDefault(doc.getDocumentElement());
returnresolver.getNamespaceForPrefix(prefix);
*/
//Dummyimplementation-notused!
publicjava.util.IteratorgetPrefixes(Stringval){
returnnull;
}
//Dummyimplemenation-notused!
publicStringgetPrefix(Stringuri){
returnnull;
}
};
}
若要查找ResourceUniqueID的值,则xpath应当誊写为://ML:MREML/ML:ResourceEntity/RMDI:ResourceMetaDataInfo/RMDI:ResourceID/RUI:ResourceUniqueID/text()
这里的ML(prefix)和URI(MERML)等已经由过程
关于含有默许定名空间地文档假如接纳NamespaceContext的体例,行将prefix和uri已映照起来,如关于以下的文档:
<MREMLxmlns="MREML"><ResourceEntity>
<ResourceMetaDataInfo>
<ResourceIDxmlns="ResourceID">
<RUI:ResourceUniqueIDxmlns:RUI="ResourceUniqueID">节目GUID</RUI:ResourceUniqueID>
<UserDefID>UserDefID填写节目代码</UserDefID>
</ResourceID>
<Title>
<ResourceName>911旧事素材</ResourceName>
</Title>
<ResourceType>1</ResourceType>
<Subject>
<KeyWords>911打击</KeyWords>
</Subject>
<Description>
<ContentDescription>美国遭受911打击现场30S画面及同期声素材</ContentDescription>
<Column>
<ColumnName>昔日天下</ColumnName>
</Column>
</Description>
<Date>
<CreateDate>2006-10-2513:12:10</CreateDate>
</Date>
<Format>
<TotalLength>00:04:35:12</TotalLength>
<NumberofElements>2</NumberofElements>
<MarkPoint>
<StartPoint>00:00:00:05</StartPoint>
<EndPoint>00:04:35:10</EndPoint>
</MarkPoint>
</Format>
</ResourceMetaDataInfo>
</ResourceEntity>
</MREML>
若要查找ResourceUniqueID的值,则xpath应当誊写为://ML:MREML/ML:ResourceEntity/RMDI:ResourceMetaDataInfo/RMDI:ResourceID/RUI:ResourceUniqueID/text()
这里的ML(prefix)和URI(MERML)等已经由过程
if(prefix.equalsIgnoreCase("ML"))
uri="MREML";
elseif(prefix.equalsIgnoreCase("RE"))
uri="http://herry.com.cn";
elseif(prefix.equalsIgnoreCase("RID"))
uri="ResourceID";
elseif(prefix.equalsIgnoreCase("RUI"))
uri="ResourceUniqueID";
elseif(prefix.equalsIgnoreCase("RMDI"))
uri="ResourceMetaDataInfo";
else
uri=null;
映照。
个中的ML和RMDI都是defaultnamespace,它的感化局限包括它的子元素,直至有新的defaultnamespace呈现为止。而namespace只对它本身起感化。如将上述文档中:<ResourceMetaDataInfo>
<ResourceIDxmlns="ResourceID">
改成:
<RMDI:ResourceMetaDataInfoxmlns:RMDI=”ResourceMetaDataInfo”>
<ResourceID>


</RMDI:ResourceMetaDataInfo>
查找ResourceUniqueID的值,则xpath应当改成://ML:MREML/ML:ResourceEntity/RMDI:ResourceMetaDataInfo/ResourceID/RUI:ResourceUniqueID/text()
人人也可参考这篇文章:
http://blog.davber.com/2006/09/17/xpath-with-namespaces-in-java/

Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net网页编程和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点
深爱那片海 该用户已被删除
沙发
发表于 2015-1-21 10:14:19 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
萌萌妈妈 该用户已被删除
板凳
 楼主| 发表于 2015-1-24 13:38:02 来自手机 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
小妖女 该用户已被删除
地板
发表于 2015-1-25 16:08:00 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
兰色精灵 该用户已被删除
5#
发表于 2015-2-3 05:46:14 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
海妖 该用户已被删除
6#
发表于 2015-2-5 02:27:07 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
第二个灵魂 该用户已被删除
7#
发表于 2015-2-7 19:24:23 | 只看该作者
是一种使用者不需花费很多时间学习的语言
老尸 该用户已被删除
8#
发表于 2015-2-8 01:04:34 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
admin 该用户已被删除
9#
发表于 2015-2-13 11:37:37 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
小女巫 该用户已被删除
10#
发表于 2015-2-21 00:35:37 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
灵魂腐蚀 该用户已被删除
11#
发表于 2015-3-6 19:26:18 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
分手快乐 该用户已被删除
12#
发表于 2015-3-13 06:11:41 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
只想知道 该用户已被删除
13#
发表于 2015-3-20 14:58:24 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
精灵巫婆 该用户已被删除
14#
发表于 2015-4-3 01:42:32 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
透明 该用户已被删除
15#
发表于 2015-4-9 14:17:30 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
冷月葬花魂 该用户已被删除
16#
发表于 2015-4-15 00:03:02 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
莫相离 该用户已被删除
17#
发表于 2015-4-17 18:55:10 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
再现理想 该用户已被删除
18#
发表于 2015-5-2 03:17:19 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
不帅 该用户已被删除
19#
发表于 2015-6-5 14:31:35 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
谁可相欹 该用户已被删除
20#
发表于 2015-6-8 21:30:00 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:59

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表