【问题标题】:NiFi: get all elements of the same tag in XML using EvaluateXpath processorNiFi:使用 EvaluateXpath 处理器获取 XML 中相同标签的所有元素
【发布时间】:2018-05-11 15:55:00
【问题描述】:

尝试在 NiFi 中解析下面的 xml,并希望解析出所有 id 并为每个 id 进行多个 Web 服务调用。

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Header>   
   </soap:Header>
   <soap:Body>
      <store-Ids>
            <Id>69E32281-0484</Id>
            <Id>3002AFCD-B494</Id>
            <Id>2C9E17AC-9D97</Id>
            <Id>98E8EB10-7D6A</Id>
            <Id>F8D5F93C-1455</Id>
            <Id>98655C3F-B58C</Id>
            <Id>8AE4FD0A-6000</Id>
            <Id>E56FE4CA-0D83</Id>
         </store-Ids>
   </soap:Body>
</soap:Envelope>

有没有办法解析出Id标签中的所有id?可以作为数组(69E32281-0484、3002AFCD-B494......)或作为字符串(69E32281-0484 3002AFCD-B4942C9E17AC-9D97............ ....) 使用 Evaluate-XPath 或 Evaluate-xQuery 处理器?

//*[local-name()='Id']/text() -------- This gives me only the 1st id. and 
//*[local-name()='Id'][2]/text() ------- This gives the 2nd id and so on....
//Id -------------------------------- This returns "Empty string set"  

因为 Id 的数量将是动态的。无法硬编码像 [0]、[1]、[2]........ 这样的计数器值来获取每个 id 的值。

PS:在 NiFi 中还有很多其他方法可以做到这一点。但想知道是否有办法使用 EvaluateXpath 处理器读取 XML 并将所有 id 标签值作为数组或文本获取。

相关链接

1) https://community.hortonworks.com/questions/101922/how-to-use-evaluatexpath-to-get-xml-roots-attribut.html

2)https://community.hortonworks.com/questions/140605/evaluatexpath-cant-return-multiple-node-values.html

【问题讨论】:

    标签: xml xml-parsing apache-nifi hortonworks-dataflow


    【解决方案1】:

    目前 EvaluateXPath 只允许节点集中的单个元素,即使目标是流文件内容。我编写了一个改进 Jira (NIFI-5187) 来涵盖对具有多个元素的节点集的支持。

    作为一种解决方法,您可以将 EvaluateXQuery 与 //*/Id 一起使用,它会为您的每个 ID 发出一个流文件。然后你可以单独处理每一个,调用你喜欢的任何网络服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 2015-08-25
      • 2012-10-02
      • 2012-10-01
      • 1970-01-01
      • 2022-01-03
      • 2016-01-10
      相关资源
      最近更新 更多