我在发布xml命名空间之前阅读了多个线程,但仍然遇到了在文件中写入没有命名空间的子xml元素的问题。
即使我在解析/读取文件之前提到注册命名空间为空,“findall”不返回任何元素。我验证了代码和xml文件中的名称空间,也打印在root.tag上。
如果我完全从标记中移除xmlns,代码就可以工作,但我想读取没有名称空间的xml文件,并且在没有名称空间的情况下写入文件。你能不能让我知道我在这里做的错误?
这是我试过的代码。
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):
xmlns="urn:iso:2012.tech.xsd.001.04">
000002
2017-09-24T00:54:26
TEST
12345678
2017-09-22T13:54:26
TEST_ListInfo
5
25.80
ABC123
XYZ123
我需要写一个文件只有客户元素没有命名空间。。