Python 2.7 Python编写不带命名空间的XML子元素
在发布关于xml名称空间的文章之前,我阅读了多个线程,但仍然存在在文件中编写没有名称空间的子xml元素的问题 尽管我在解析/读取文件之前提到注册的名称空间为空,“findall”没有返回任何元素。我验证了代码和xml文件中存在的名称空间,也打印在root.tag上 如果我从标记中完全删除xmlns,代码就可以工作了,但是我想读取没有名称空间的xml文件,然后写入没有名称空间的文件。你能告诉我我在这里犯的错误吗 这是我试过的代码Python 2.7 Python编写不带命名空间的XML子元素,python-2.7,namespaces,Python 2.7,Namespaces,在发布关于xml名称空间的文章之前,我阅读了多个线程,但仍然存在在文件中编写没有名称空间的子xml元素的问题 尽管我在解析/读取文件之前提到注册的名称空间为空,“findall”没有返回任何元素。我验证了代码和xml文件中存在的名称空间,也打印在root.tag上 如果我从标记中完全删除xmlns,代码就可以工作了,但是我想读取没有名称空间的xml文件,然后写入没有名称空间的文件。你能告诉我我在这里犯的错误吗 这是我试过的代码 import xml.etree.ElementTree as ET
import xml.etree.ElementTree as ET
ET.register_namespace("","urn:iso:2012.tech.xsd.001.04") ##Making sure parse a xml file without namespace
tree = ET.parse("sample.xml")
root = tree.getroot()
print("%s : %s"%(root.tag, root.attrib))
out_handle = open("customer_header.xml","ab")
for elt in root.iter():
all_ntry = elt.findall('Customer') ## Not returning all Customer elements, even though ET.register_namespace('',uri) mentioned before parsing
for ele in all_ntry:
print("Customer Block Found:%s"%ele)
ele_tree = ET.ElementTree(ele)
ele_tree.write(out_handle)
XML文件(sample.XML):
000002
2017-09-24T00:54:26
试验
12345678
2017-09-22T13:54:26
测试列表信息
5.
25.80
ABC123
XYZ123
我需要编写一个只有文件的客户元素,没有名称空间
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns:xsi="http://www.company.org/2000/instance"
xmlns="urn:iso:2012.tech.xsd.001.04">
<BackToCustomer>
<CustGrup>
<Mid>000002</Mid>
<Date>2017-09-24T00:54:26</Date>
<Info>TEST</Info>
</CustGrup>
<Batch>
<Id>12345678</Id>
<Date>2017-09-22T13:54:26</Date>
<ListInfo>
<Id>
<Othr>
<Id>TEST_ListInfo</Id>
</Othr>
</Id>
</ListInfo>
<Details>
<Total>
<Count>5</Count>
<Amt>25.80</Amt>
</Total>
</Details>
<Customer>
<CustomerRef>ABC123</CustomerRef>
</Customer>
<Customer>
<CustomerRef>XYZ123</CustomerRef>
</Customer>
</Batch>
</BackToCustomer>
</Document>