gpt4 book ai didi

java - 在 Java 中评估 XPath 表达式的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:41:11 26 4
gpt4 key购买 nike

有人可以帮我找出我在评估以下 XPath 表达式时犯的错误吗?
我想通过 XPath 获取我的 xml 中节点“Model”下的所有“DataTable”节点。
这是我的 XML 文档:

<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Application>
<Model>
<DataSet name="ds" primaryTable="Members" openRows="1">
<DataTable name="Members" openFor="write">
<DataColumn name="id" type="String" mandatory="true" primaryKey="true" valueBy="user"/>
<DataColumn name="name" type="String" mandatory="true" valueBy="user"/>
<DataColumn name="address" type="String" mandatory="false" valueBy="user"/>
<DataColumn name="city" type="String" mandatory="false" valueBy="user"/>
<DataColumn name="country" type="String" mandatory="false" valueBy="user"/>
</DataTable>
</DataSet>
</Model>
<View>
<Composite>
<Grid>
<Label value="ID:" row="0" column="0" />
<Label value="Name:" row="1" column="0" />
<Label value="Address:" row="2" column="0" />
<Label value="City:" row="3" column="0" />
<Label value="Country:" row="4" column="0" />

<TextField name="txtId" row="0" column="1" />
<TextField name="txtName" row="1" column="1" />
<TextField name="txtAddress" row="2" column="1" />
<TextField name="txtCity" row="3" column="1" />
<TextField name="txtCountry" row="4" column="1" />
</Grid>
</Composite>
</View>
</Application>
</Root>

这里是提取所需节点列表的 Java 代码:

try {
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
domFactory.setIgnoringComments(true);
domFactory.setIgnoringElementContentWhitespace(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document dDoc = builder.parse("D:\TEST\myFile.xml");

XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nl = (NodeList) xpath.evaluate("//Model//DataTable", dDoc, XPathConstants.NODESET);
System.out.println(nl.getLength());

}catch (Exception ex) {
System.out.println(ex.getMessage());
}

加载和解析xml文件没有问题,我可以在dDoc中看到正确的节点。问题在于 xpath 在评估我的表达式时不返回任何内容。我出于测试目的尝试了许多其他表达式,但每次生成的 NodeList“nl”都没有任何项目

最佳答案

很可能 XML 文档有一个默认命名空间,但您没有显示。

提供的 XPath 表达式选择 <DataTable>应用于提供的 XML 文档时的元素

关于java - 在 Java 中评估 XPath 表达式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2981509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com