【问题标题】:How do I select something with a blank namespace with Jaxen?如何使用 Jaxen 选择具有空白命名空间的内容?
【发布时间】:2010-01-29 01:55:33
【问题描述】:

我有以下 xml:

<config xmlns="http://www.someurl.com">
  <product>
    <brand>
      <content />
    </brand>
  </product>
</config>

我很好地将它读入 JDOM。

但是,当我尝试使用 Jaxen 抓取内容时,我似乎什么也得不到。

这是一个似乎不起作用的示例:

XPath xpath = new JDOMXPath("config");

SimpleNamespaceContext namespaceContext = new SimpleNamespaceContext();
namespaceContext.addNamespace("", "http://www.someurl.com");

xpath.setNamespaceContext(namespaceContext);

assert xpath.selectNodes(document).size() > 0 : "should find more than 0";

这个断言总是失败。

我做错了什么?

【问题讨论】:

    标签: java xml jdom


    【解决方案1】:

    您必须指定一个前缀。拨打电话 addNamespace("hopfrog", "http://..."); 然后制作 XPath ("hopfrog:config");

    请记住,XML 中的前缀并不是真实数据模型的一部分。真实数据模型为每个元素和属性分配一个可能为空的 URL。您可以在 XPath 中使用任何您想要的前缀,只要它绑定到正确的 URL。由于您希望它为空白的 URL,因此您将前缀绑定到“空白”。

    【讨论】:

    • 但这与我的 xml 不匹配!这不匹配看起来像这样的 xml:someurl.com">
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2010-10-16
    相关资源
    最近更新 更多