【问题标题】:Unable to get the node value using xpath in camel无法在骆驼中使用xpath获取节点值
【发布时间】:2015-05-15 05:45:34
【问题描述】:

我正在尝试从骆驼的输入 xml 中提取节点值,下面是我拥有的示例 xml 和示例路由。

<root>
    <jobs>
          <job id="1">Salesman</job>
          <job id="2">Manager</job>
    </jobs>
</root>

在这里,我想获取第一个工作,即销售员。

路线

from("file:src/data?noop=true")
.setHeader("someHeader",xpath("/root/jobs/job"))
.to(someCustomComponent://foo);

当我检索标头时,我得到了一个 DTMNodeList 的实例,我需要在迭代后从中提取节点值。

我希望将值作为字符串检索。我该怎么做?

谢谢。

问候 Senthil Kumar Sekar

【问题讨论】:

    标签: xpath apache-camel


    【解决方案1】:

    使用stringResult:

    from("file:src/data?noop=true")
      .setHeader("someHeader",xpath("/root/jobs/job").stringResult())
      .to(someCustomComponent://foo);
    

    这将给您“推销员”,因为 XPath 1.0 中多个节点的集合的“字符串值”的定义是文档顺序中集合中第一个节点的值。但是您可能希望使用更具体的路径来确保您取出正确的东西,例如/root/jobs/job[@id='1']

    【讨论】:

      【解决方案2】:

      在 xpath 中尝试/root/jobs/job/text()

      【讨论】:

      • 这仍然会给你一个节点集,只有一个包含文本节点而不是元素节点。
      【解决方案3】:

      尝试以下 xpath:string-join(/root/jobs/job, ',') 。这将给出节点值的逗号分隔字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-16
        • 2017-07-06
        相关资源
        最近更新 更多