java中的命名空间_XPath与Java中的命名空间
>简短的答案:使用XPath local-name().像这样:xPathFactory.newXPath().compile(“// * [local-name()=’requestURL’] / text()”);将返回/ CAMERA / Streaming / status
>或者你可以实现一个NamespaceContext来映射名称空间名称和URI,并在XPath对象之前设置它,然后再查询.
看看这个
blog article
解决方案1样本:
XPath xpath = XPathFactory.newInstance().newXPath();
String responseStatus = xpath.evaluate("//*[local-name()='ResponseStatus']/text()", document);
System.out.println("-> " + responseStatus);
解决方案2样本:
// load the Document
Document document = ...;
NamespaceContext ctx = new NamespaceContext() {
public String getNamespaceURI(String prefix) {
return prefix.equals("urn") ? "urn:camera-org" : null;
}
public Iterator getPrefixes(String val) {
return null;
}
public String getPrefix(String uri) {
return null;
}
};
XPath xpath = XPathFactory.newInstance().newXPath();
xpath.setNamespaceContext(ctx);
String responseStatus = xpath.evaluate("//urn:ResponseStatus/text()", document);
System.out.println("-> " + responseStatus);
编辑
这是一个完整的例子,它正确地检索元素:
String xml = "\r\n" + //
"\r\n" + //
"/CAMERA/Streaming/status\r\n" + //
"4\r\n" + //
"Invalid Operation\r\n" + //
"0\r\n" + //
"\r\n" + //
"";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new java.io.ByteArrayInputStream(xml.getBytes()));
XPath xpath = XPathFactory.newInstance().newXPath();
xpath.setNamespaceContext(new NamespaceContext() {
public String getNamespaceURI(String prefix) {
return prefix.equals("urn") ? "urn:camera-org" : null;
}
public Iterator> getPrefixes(String val) {
return null;
}
public String getPrefix(String uri) {
return null;
}
});
XPathExpression expr = xpath.compile("//urn:ResponseStatus");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
Node currentItem = nodes.item(i);
System.out.println("found node -> " + currentItem.getLocalName() + " (namespace: " + currentItem.getNamespaceURI() + ")");
}
java中的命名空间_XPath与Java中的命名空间相关推荐
- java获取wsdl命名空间_Web服务 – WSDL中的targetNamespace和命名空间
WSDL文件中的目标命名空间将是与SOAP服务本身相关联的名称空间.例如,我们有一个客户服务,命名空间将像http://www.acme.com/Customer/V1/CustomerService ...
- java开发中遇到的Bug(持续更新中)
1.Error creating bean with name 'XXX': Injection of autowired dependencies: 错误原因:实体类中没有@Component(&q ...
- java xfire指定参数名_Java编程中使用XFire框架调用WebService程序接口
JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊. ...
- java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
- java中separator_java - File.separator和路径中的斜杠之间的区别
java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...
- java的对象是什么意思_Java中对象和对象引用的区别,引用、指向是什么意思
Java的变量分为两大类:基本数据类型和引用数据类型. 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量 ...
- java gettext_JAVA中getText()怎么从一个JTextArea中读出内容?
想先创建一个JTextArea,然后在里面输入内容(几个字母),然后用getText读出里面的内容,可是好像只能是先在JTextArea里面写,然后getText才能读出,而不能先运行,在图形界面的J ...
- c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法
c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...
- (转)java 中的try catch finally 语句中含有return语句的执行情况(总结版)
原处:http://blog.csdn.net/ns_code/article/details/17485221 在这里看到了try catch finally块中含有return语句时程序执行的几种 ...
最新文章
- 23Command(命令)模式
- .netcore 如何获取系统中所有session_集群化部署,Spring Security 要如何处理 session 共享?
- oracle如何删除重复数据第一条,oracle删除重复数据保留第一条记录
- python脚本例子_python dict 字典 以及 赋值 引用的一些实例(详解)
- 浅析 Java Thread.join()
- 简单爬虫-爬取免费代理ip
- python一节课多久_第一节课 python简介
- ThinkPHP中的路由是什么意思?
- Bug(四)——error LNK1112:模块计算机类型x86与目标计算机类型x64冲突
- java学习(一)多态
- word字间距异常处理方式
- Linux内核部件分析 更强的链表klist
- oracle 创建视图_Oracle 中视图的创建和处理方法
- JAVA中super和this关键字的区别
- zblog include html页面,zblog模板开发第一课:zblog标签调用大全
- 一次哔哩哔哩面试经历,吐血整理
- python两两组合_python – 一个列表中的两个组合列表
- 案例1—MP3在线搜索下载程序
- 基于Python的指数基金量化投资——指数数据获取
- PAT甲级真题目录(按题型整理)(转自柳神)