机器数据分析平台

  • 机器数据分析平台 > 产品手册 > SPL参考手册 > xmlpath

    xmlpath

    最近更新时间:2019-10-17 15:06:10

    通过xmlpath可以从xml数据中通过路径参数提取相关信息。也可以在eval算子中使用xmlpath()函数。

    语法:

    xmlpath [input=< field>] [output=< field>] path=< datapath> | < datapath>

    参数说明:

    1.input 是读取数据的字段,默认input为_raw字段。

    2.output 是输出的字段,如果未指定output,则path参数的值将设为提取值的字段名称。

    3.path 是要提取数据的位置路径。路径可以指定为path=<datapath>或可以省略path关键字。路径形如'user.phoneNumbers{1}.number',由字段名称、大括号标注的索引和句点拼接而成。

    4.由大括号引起的索引可以是:

    * 整数,用于引用数组中数据的位置. JSON使用从零开始的索引,而XML使用从一开始的索引。如,purchases.book{1} 在json中指purchases的第二个book元素,而在xml中指purchases的第一个book元素。  
    
    * 由@开头的字符串,以引用XML属性,如'title{@yearPublished}'。json数据不支持字符串索引。
    
    * 空,如{},表示通配符。比如 phoneNumbers.number{} 表示phoneNumbers下所有的number元素. 在jsonpath中,表示jsonArray必须加上{},表示jsonObject则不能加上{}. 比如,如果purchases下面有多个book,那么表示purchases下的所有books 必须用purchases.book{} 而不是purchases.book。 而在xmlpath中,由于xml没有array的概念,purchases.book 和purchases.book{} 结果一样。
    

    示例:

    假设有以下xml数据 :

    <purchases>
      <book>
        <author>Martin, George R.R.</author>
        <title yearPublished=1996>A Game of Thrones</title>
        <title yearPublished=1998>A Clash of Kings</title>
      </book>
    </purchases>
    
    • 查询 没有孩子的xml元素
      query:

      xmlpath output=myfield path=purchases.book.author  
      

      output: myfield字段的值为"Martin, George R.R.".

    • 查询 有孩子的xml元素
      query:

      xmlpath output=myfield path=purchases.book 
      

      output: myfield字段的值为"<author>Martin, George R.R.</author><title yearPublished=1996>A Game of Thrones</title><title yearPublished=1998>A Clash of Kings</title>".

    • 查询 xml attribute

      query:

      xmlpath output=myfield path=purchases.book.title{@yearPublished}     
      

      output: myfield字段的值为[1996,1998].

    • 查询 xml数组

      query:

      xmlpath output=myfield path=purchases.book.title{1}   
      

      output: myfield字段的值为"A Game of Thrones".

    以上内容是否对您有帮助?
  • Icon helper
    Icon free helper
    Close