XPath未使用local-name()函数选择XML子元素
我在看W3学校网站上的一个例子,他们能够通过对价格元素施加条件来显示标题元素的值 不带名称空间的XPATH表达式XPath未使用local-name()函数选择XML子元素,xml,xpath,Xml,Xpath,我在看W3学校网站上的一个例子,他们能够通过对价格元素施加条件来显示标题元素的值 不带名称空间的XPATH表达式 /bookstore/book[price>35]/title /*[local-name()='bookstore']/*[local-name()='book'[local-name()='author' and text()='Giada De Laurentiis']]/*[local-name()='price'] 然而,当我通过对author元素施加条件将同一个
/bookstore/book[price>35]/title
/*[local-name()='bookstore']/*[local-name()='book'[local-name()='author' and text()='Giada De Laurentiis']]/*[local-name()='price']
然而,当我通过对author元素施加条件将同一个xml更改为具有名称空间并显示price元素值时,我看到了异常。下面是带有名称空间的XPATH表达式
/bookstore/book[price>35]/title
/*[local-name()='bookstore']/*[local-name()='book'[local-name()='author' and text()='Giada De Laurentiis']]/*[local-name()='price']
它例外地失败了
Exception in thread "main" javax.xml.transform.TransformerException: ERROR! Unknown op code: 21
at com.sun.org.apache.xpath.internal.compiler.Compiler.error(Unknown Source)
at com.sun.org.apache.xpath.internal.compiler.OpMap.getFirstPredicateOpPos(Unknown Source)
at com.sun.org.apache.xpath.internal.axes.WalkerFactory.analyzePredicate(Unknown Source)
您能告诉我XPATH表达式的名称空间有什么问题吗
带名称空间的XML
日常意大利语
吉娅达·德·劳伦蒂斯
2005
30
哈利·波特
J K.罗琳
2005
29.99
XQuery启动
詹姆斯·麦戈文
2003
49.99
你真的不应该以这种方式绕过名称空间,但是如果你坚持的话,这里有一个基于
local-name()
的XPath,为了可读性而换行,用于为书籍
选择价格
元素,该书的作者是书店
元素中的Giada De Laurentiis”
:
/*[local-name()='bookstore']
/*[local-name()='book' and *[local-name()='author' and .='Giada De Laurentiis']]
/*[local-name()='price']