gpt4 book ai didi

java - 需要有关带 namespace 的 xPath 表达式的帮助

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:55:45 24 4
gpt4 key购买 nike

我需要一些有关 xpath 表达式的帮助。

我有以下 xml 文档:

<?xml version="1.0" encoding="utf-8"?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.test.com/search/local/ws/rest/v1">
<nodeA>text</nodeA>
<nodeB>
<nodeb1>
<nodeb1a>
<nodeTest>hello</nodeTest>
</nodeb1a>
</nodeb1>
</nodeB>
</Response>

我正在使用 Springs rest 模板来检索数据。

这里是我使用 xpath 表达式获取节点值的地方:

xpathTemplate.evaluate("base:*", xmlSource, new NodeMapper() {
public Object mapNode(Node node, int i) throws DOMException {
Element response = (Element) node;
System.out.println("hi: " + response.getTextContent());

我像这样将 base 添加到我的命名空间映射中:

HashMap<String, String> nameSpaces = new HashMap<String, String>();
nameSpaces.put("xsi", "http://www.w3.org/2001/XMLSchema-instance");
nameSpaces.put("xsd", "http://www.w3.org/2001/XMLSchema");
nameSpaces.put("base", "http://schemas.test.com/search/local/ws/rest/v1");
((Jaxp13XPathTemplate) xpathTemplate).setNamespaces(nameSpaces);

使用表达式 base:* 给我 Response 节点,我可以使用 .getChildNodes 深入到子节点并为每个子节点创建节点列表。

我想直接用 xpath 表达式获取 hello 值,但我无法让它与除 base:* 之外的任何东西一起工作。有人可以帮我表达一下吗?

谢谢

最佳答案

这个 XPath 表达式:

/base:Response/base:nodeB/base:nodeb1/base:nodeb1a/base:nodeTest

假设 base 绑定(bind)到 http://schemas.test.com/search/local/ws/rest/v1 命名空间 URI。

关于java - 需要有关带 namespace 的 xPath 表达式的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170223/

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