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 ```