我正在试图弄清楚如何使用XPath从以下XML文档中的XML片段中获取exceptionID和instrumentID值(是的,CDATA中的XML有点奇怪,但这是我从第三方服务获得的)
<?xml version="1.0"?>
<exception>
<info>
<![CDATA[
<info>
<exceptionID>1</exceptionID>
<instrumentID>1</instrumentID>
</info>
]]>
</info>
</exception>
Run Code Online (Sandbox Code Playgroud)
是否可以在一个XPath语句中获取值?
我在Java中使用javax.xml.xpath.XPath(JDK 1.5 with Xalan 2.7.1和Xerces 2.9.1),例如
XPath xpath = XPathFactory.newInstance().newXPath();
Long exceptionId = new Long(((Double)xpath.evaluate(this.exceptionIdXPath,
document, XPathConstants.NUMBER)).longValue());
Run Code Online (Sandbox Code Playgroud)
这是this.exceptionIdXPath变量,我不知道如何设置,我知道例如:
/exception/info/text()/info/exceptionID 将无法正常工作(text()返回CDATA内的数据,但没有"知识"它是XML)
是的,你可以做到.但是CDATA部分内的任何内容都是字符串,不会成为DOM的一部分.因此,您必须使用XPath的字符串操作函数.
在XPath中,您可以使用substring-before和substring-after.这样的事情可能有用:
substring-before(substring-after(/exception/info,"<exceptionID>"), "</exceptionID>")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1068 次 |
| 最近记录: |