我正在尝试从MySQL / MariaDB中的表中的XML中选择节点的值
根据MySQL文档,MySQL不支持following-sibling
作为XPath轴。还有其他选择吗?
文档: http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html#function_extractvalue
我的XML结构类似于:
<fields>
<record>
<id>10</id>
<value>Foo</value>
</record>
<record>
<id>20</id>
<value>Bar</value>
</record>
</fields>
我需要找到ID为10的记录,并在<value></value>
中获取文字。
有效的XPath将是/fields/record/id[text()=10]/following-sibling::value/text()
,它将返回Foo
我有什么选择?
谢谢!
答案 0 :(得分:3)
在这个简单的例子中,您不需要following-sibling
。试试这个:
/fields/record[id[text()=10]]/value/text()
使用括号内的id
标记会将您的上下文保留为record
,以便以下斜杠下降到id
的相应兄弟(与id
具有相同的父级)。
答案 1 :(得分:0)
我有这个XML:
java.lang.NoClassDefFoundError: org/apache/derby/shared/common/security/SystemPermission
at org.apache.derby.iapi.jdbc.JDBCBoot.boot(JDBCBoot.java:93)
at org.apache.derby.iapi.jdbc.JDBCBoot.boot(JDBCBoot.java:68)
at org.apache.derby.jdbc.EmbeddedDriver.<clinit>(EmbeddedDriver.java:95)
at Testing.testConnection.main(testConnection.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.derby.shared.common.security.SystemPermission
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 4 more
下面是查询:
SELECT EXTRACTVALUE(xml, “列表/属性[Id [text()='NAME']] /值”) 从xx;
但是由于“字段列表”中的未知列“ List / Attribute [Id [text()='COUNTRY']] / Value”而出现错误