Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中是否有允许按路径添加元素的xml解析器_Python_Xml_Parsing_Path - Fatal编程技术网

在python中是否有允许按路径添加元素的xml解析器

在python中是否有允许按路径添加元素的xml解析器,python,xml,parsing,path,Python,Xml,Parsing,Path,是否有任何方法可以使用如下“路径”向xml文档添加一组条目: element = xmldoc.createElement("Work\\MainProject\\prj\\project.vcproj") xmldoc.appendChild(element) 哪个将自动在xml文件中创建所有必需的条目 非常感谢, Roman我不确定这是否正是你想要的(有点不清楚“所有必要的条目”是什么意思)。无论如何,下面是如何使用ElementTree(使用Python2.6测试)基于“路径字符串”创建

是否有任何方法可以使用如下“路径”向xml文档添加一组条目:

element = xmldoc.createElement("Work\\MainProject\\prj\\project.vcproj")
xmldoc.appendChild(element)
哪个将自动在xml文件中创建所有必需的条目

非常感谢,
Roman

我不确定这是否正是你想要的(有点不清楚“所有必要的条目”是什么意思)。无论如何,下面是如何使用ElementTree(使用Python2.6测试)基于“路径字符串”创建两种XML层次结构。注意:minidom并不是真正必要的;它只用于漂亮的印刷

from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString

def deep(tags):
    """Create a deep hierarchy with tags[0] as the root and
    tags[-1] as the sole leaf node"""
    root = Element(tags[0])
    parent = root
    for tag in tags[1:]:
        elem = SubElement(parent, tag)
        parent = elem
    return root

def shallow(tags):
    """Create a shallow hierarchy with tags[0] as the root and
    the other items as direct children"""
    root = Element(tags[0])
    for tag in tags[1:]:
        elem = SubElement(root, tag)
    return root

def pprint(s):
    dom = parseString(s)
    return dom.toprettyxml(indent=" ")

if __name__ == '__main__':
    p = "Work/MainProject/prj/project.vcproj"
    taglist = p.split("/")

    d = deep(taglist)
    print pprint(tostring(d))

    s = shallow(taglist)
    print pprint(tostring(s))
=>


<?xml version="1.0" ?>
<Work>
 <MainProject>
  <prj>
   <project.vcproj/>
  </prj>
 </MainProject>
</Work>

<?xml version="1.0" ?>
<Work>
 <MainProject/>
 <prj/>
 <project.vcproj/>
</Work>