Splitting XML file into multiple at given tags

后端 未结 3 1551
孤城傲影
孤城傲影 2021-01-15 11:24

I want to split a XML file into multiple files. My workstation is very limited to Eclipse Mars with Xalan 2.7.1.

I can also use Python, but never used it before.

3条回答
  •  栀梦
    栀梦 (楼主)
    2021-01-15 12:10

    Use Python ElementTree.

    Create a file e.g. xmlsplitter.py. Add the code below (where file.xml is your xml file and assuming every row has a unique NAME element.).

    import xml.etree.ElementTree as ET
    context = ET.iterparse('file.xml', events=('end', ))
    for event, elem in context:
        if elem.tag == 'row':
            title = elem.find('NAME').text
            filename = format(title + ".xml")
            with open(filename, 'wb') as f:
                f.write("\n")
                f.write(ET.tostring(elem))
    

    Run it with

    python xmlsplitter.py
    

    Or if the names are not unique:

    import xml.etree.ElementTree as ET
    context = ET.iterparse('file.xml', events=('end', ))
    index = 0
    for event, elem in context:
        if elem.tag == 'row':
            index += 1
            filename = format(str(index) + ".xml")
            with open(filename, 'wb') as f:
                f.write("\n")
                f.write(ET.tostring(elem))
    

提交回复
热议问题