在Persistence.xml中列出所有持久性单元
我试图使用XPath获取persistence.xml中所有持久性单元的列表,但遇到了问题。我认为可行的方法是:在Persistence.xml中列出所有持久性单元,xml,xpath,namespaces,xml-namespaces,Xml,Xpath,Namespaces,Xml Namespaces,我试图使用XPath获取persistence.xml中所有持久性单元的列表,但遇到了问题。我认为可行的方法是: //persistence/persistence-unit * 后者为我提供了持久化子级,至少我可以手动迭代,但这违背了XPath的目的 以下是my persistence.xml的一个片段: <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/n
//persistence/persistence-unit
*
后者为我提供了持久化子级,至少我可以手动迭代,但这违背了XPath的目的
以下是my persistence.xml的一个片段:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
有什么想法吗
沃尔特这是一个常见问题。只要XML文档声明了默认名称空间,XPath表达式中的任何无前缀节点测试都将被视为“无名称空间”。XPath表达式不选择所需的节点,因为它们的名称不在“无命名空间”中,而是在声明的默认命名空间中: 解决方案(任一):
“xxx”
)。阅读您正在使用的特定XPath引擎(主机)的文档,以了解如何准确地执行此操作。然后使用这个XPath表达式://xxx:persistence/persistence unit
/*[name()='persistence']/*[name()='persistence-unit']
/
缩写,因为它通常会导致异常,而且效率也很低
例如,如果您知道所有持久化单元
元素都是顶层元素的子元素,则使用:
/*/xxx:persistence-unit
好问题(+1)。请看我的答案以获得解释和两种不同的正确解决方案。啊,精彩绝伦。我要试一试。