NiFi:使用EvaluatePath处理器获取XML中相同标记的所有元素

NiFi:使用EvaluatePath处理器获取XML中相同标记的所有元素,xml,xml-parsing,apache-nifi,hortonworks-dataflow,Xml,Xml Parsing,Apache Nifi,Hortonworks Dataflow,正在尝试在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"

正在尝试在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的数量将是动态的。无法将计数器值硬编码为[0]、[1]、[2]。。。。。。。。获取每个id的值

PS:在NiFi中,还有很多其他方法可以实现这一点。但我想知道是否有一种方法可以使用EvaluatePath处理器读取XML,并以数组或文本的形式获取所有id标记值

相关链接

(一)


2)

当前EvaluatePath仅允许节点集中的单个元素,即使目标是flowfile内容。我已经编写了一个改进Jira(),以涵盖对具有多个元素的节点集的支持


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

当前EvaluatePath仅允许节点集中的单个元素,即使目标是flowfile内容。我已经编写了一个改进Jira(),以涵盖对具有多个元素的节点集的支持

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

//*[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"