github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/md/xml.md (about)

     1  ### `xml()` {#fn-xml}
     2  
     3  函数原型:`fn xml(input: str, xpath_expr: str, key_name)`
     4  
     5  函数说明:通过 xpath 表达式,从 XML 中提取字段。
     6  
     7  参数:
     8  
     9  - input: 待提取的 XML
    10  - xpath_expr: xpath 表达式
    11  - key_name: 提取后数据写入新 key
    12  
    13  示例一:
    14  
    15  ```python
    16  # 待处理数据
    17         <entry>
    18          <fieldx>valuex</fieldx>
    19          <fieldy>...</fieldy>
    20          <fieldz>...</fieldz>
    21          <fieldarray>
    22              <fielda>element_a_1</fielda>
    23              <fielda>element_a_2</fielda>
    24          </fieldarray>
    25      </entry>
    26  
    27  # 处理脚本
    28  xml(_, '/entry/fieldarray//fielda[1]/text()', field_a_1)
    29  
    30  # 处理结果
    31  {
    32    "field_a_1": "element_a_1",  # 提取了 element_a_1
    33    "message": "\t\t\u003centry\u003e\n        \u003cfieldx\u003evaluex\u003c/fieldx\u003e\n        \u003cfieldy\u003e...\u003c/fieldy\u003e\n        \u003cfieldz\u003e...\u003c/fieldz\u003e\n        \u003cfieldarray\u003e\n            \u003cfielda\u003eelement_a_1\u003c/fielda\u003e\n            \u003cfielda\u003eelement_a_2\u003c/fielda\u003e\n        \u003c/fieldarray\u003e\n    \u003c/entry\u003e",
    34    "status": "unknown",
    35    "time": 1655522989104916000
    36  }
    37  ```
    38  
    39  示例二:
    40  
    41  ```python
    42  # 待处理数据
    43  <OrderEvent actionCode = "5">
    44   <OrderNumber>ORD12345</OrderNumber>
    45   <VendorNumber>V11111</VendorNumber>
    46  </OrderEvent>
    47  
    48  # 处理脚本
    49  xml(_, '/OrderEvent/@actionCode', action_code)
    50  xml(_, '/OrderEvent/OrderNumber/text()', OrderNumber)
    51  
    52  # 处理结果
    53  {
    54    "OrderNumber": "ORD12345",
    55    "action_code": "5",
    56    "message": "\u003cOrderEvent actionCode = \"5\"\u003e\n \u003cOrderNumber\u003eORD12345\u003c/OrderNumber\u003e\n \u003cVendorNumber\u003eV11111\u003c/VendorNumber\u003e\n\u003c/OrderEvent\u003e",
    57    "status": "unknown",
    58    "time": 1655523193632471000
    59  }
    60  ```