机器数据分析平台

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

    xmlpath

    最近更新时间:2020-04-01 20:13:05

    通过 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.由大括号引起的索引可以是:

    * 整数,用于引用数组中数据的位置。 XML数据使用从1开始的索引。如,purchases.book{1} 在 xml 中指 purchases 的第1个 book 元素。  
    
    * 由 @ 开头的字符串,以引用 XML 属性,如 'title{@yearPublished}'。
    
    * 空,如{},表示通配符。比如 phoneNumbers.number{} 表示 phoneNumbers 下所有的 number 元素。
    

    示例:

    假设有以下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  
    

    指定 path=purchases.book.author 即提取<purchases>标签下的<book>标签下的<author>标签里的值。

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

    • 从 xml 中提取包含子标签的标签。

    query:

    xmlpath output=myfield path=purchases.book 
    

    指定 path=purchases.book 即提取<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 事件的具体属性值

      query:

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

    指定 path=purchases.book.title{@yearPublished} 即提取<purchases>标签下的<book>标签下的<title>标签里 yearPublished 属性的值。

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

    • xml 事件中,标签里包含值为数组的示例:

      query:

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

      指定 path=purchases.book.title{1} 即提取 <purchases> 标签下的 <book> 标签下的 <title> 标签里值的第一个元素。

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

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