這是我的xml字符串
xml = '''
<exta>
<signature>This </signature>
<begin_date>2019-07-12T09:41:48.187</begin_date>
<ver>4</ver>
<maiden_bc>1549</maiden_bc>
<exta_id>12345</exta_id>
<nps_max_price xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<exta_id>72723</exta_id>
<extended_datetime>2018-11-20T11:01:29.040</extended_datetime>
<event_ind>E</event_ind>
<maiden>12345</maiden>
<patient_id>123</patient_id>
<boss_id>123LHF</boss_id>
<template_name/>
<end_date>2019-01-01T00:00:00</end_date>
<UYI_AMN xsi:nil="true"/>
<dedt_bef_ATS xsi:nil="true"/>
<form>W</form>
</nps_max_price>
</exta>
'''
我使用cleanup_namespaces
從xml字符串中刪除名稱空間
from lxml import etree
root = etree.fromstring(xml)
for elem in root.getiterator():
elem.tag = etree.QName(elem).localname
etree.cleanup_namespaces(root)
print(etree.tostring(root).decode())
這給了我:
<exta>
<signature>This </signature>
<begin_date>2019-07-12T09:41:48.187</begin_date>
<ver>4</ver>
<maiden_bc>1549</maiden_bc>
<exta_id>12345</exta_id>
<nps_max_price xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<exta_id>72723</exta_id>
<extended_datetime>2018-11-20T11:01:29.040</extended_datetime>
<event_ind>E</event_ind>
<maiden>12345</maiden>
<patient_id>123</patient_id>
<boss_id>123LHF</boss_id>
<template_name/>
<end_date>2019-01-01T00:00:00</end_date>
<UYI_AMN xsi:nil="true"/>
<dedt_bef_ATS xsi:nil="true"/>
<form>W</form>
</nps_max_price>
</exta>
然而,預期的輸出是xml沒有名稱空間xmlns:xsi, xsi:nil, xsd etc
。我該怎么做?
Expected Output:
<exta>
<signature>This </signature>
<begin_date>2019-07-12T09:41:48.187</begin_date>
<ver>4</ver>
<maiden_bc>1549</maiden_bc>
<exta_id>12345</exta_id>
<nps_max_price>
<exta_id>72723</exta_id>
<extended_datetime>2018-11-20T11:01:29.040</extended_datetime>
<event_ind>E</event_ind>
<maiden>12345</maiden>
<patient_id>123</patient_id>
<boss_id>123LHF</boss_id>
<template_name/>
<end_date>2019-01-01T00:00:00</end_date>
<UYI_AMN/>
<dedt_bef_ATS/>
<form>W</form>
</nps_max_price>
</exta>
問題中的代碼從元素中刪除名稱空間。但是在XML字符串中,沒有任何元素綁定到命名空間。這就是為什么什么都沒有改變。
但是,有兩個命名空間屬性(
xsi:nil
)。如果您只是想刪除這些屬性(或任何命名空間屬性),可以通過以下方式進行刪除: