无法使用元素树将一行插入到 xml 文件的正确小节中
Cannot insert a line into the correct subsection in an xml file using element tree
我正在尝试使用 Python 3.4 中的 ElementTree 将一行添加到 xml 文件中。但我似乎无法将其放入正确的部分。
行是:
<SessionConfiguration File="TestOption1.Invalid.xml" Name="Option3" />
进入配置文件,如下所示:
<Manager>
<ConfigurationFiles>
<SessionConfiguration File="TestOption1.valid.xml" Name="Option1" />
<SessionConfiguration File="TestOption2.valid.xml" Name="Option2" />
<SessionConfiguration File="TestOption1.Invalid.xml" Name="Option3" />
</ConfigurationFiles>
</Manager>
代码:
file = "config.xml"
parent = et.Element("ConfigurationFiles")
node = et.SubElement(parent, 'SessionConfiguration', Name='Option3', File='TestOption1.Invalid.xml')
tree = et.parse(file)
root = tree.getroot()
root.insert(2, node)
tree.write(file)
问题是我似乎无法插入 [ConfigurationFiles],但它出现在它之前。
<Manager>
<SessionConfiguration="TestOption1.Invalid.xml" Name="Option3" />
<ConfigurationFiles>
<SessionConfiguration File="TestOption1.valid.xml" Name="Option1" />
<SessionConfiguration File="TestOption2.valid.xml" Name="Option2" />
</ConfigurationFiles>
不要创建新的父元素。相反,获取对现有父元素的引用和 append 它的新元素。
原文config.xml:
<Manager>
<ConfigurationFiles>
<SessionConfiguration File="TestOption1.valid.xml" Name="Option1" />
<SessionConfiguration File="TestOption2.valid.xml" Name="Option2" />
</ConfigurationFiles>
</Manager>
代码:
from xml.etree import ElementTree as et
file = "config.xml"
tree = et.parse(file)
# Find the parent
parent = tree.find(".//ConfigurationFiles")
# Create the new element
node = et.Element('SessionConfiguration', Name='Option3', File='TestOption1.Invalid.xml')
# Append the new element
parent.append(node)
tree.write("config2.xml")
config2.xml 中的结果输出:
<Manager>
<ConfigurationFiles>
<SessionConfiguration File="TestOption1.valid.xml" Name="Option1" />
<SessionConfiguration File="TestOption2.valid.xml" Name="Option2" />
<SessionConfiguration File="TestOption1.Invalid.xml" Name="Option3" /></ConfigurationFiles>
</Manager>
我正在尝试使用 Python 3.4 中的 ElementTree 将一行添加到 xml 文件中。但我似乎无法将其放入正确的部分。
行是:
<SessionConfiguration File="TestOption1.Invalid.xml" Name="Option3" />
进入配置文件,如下所示:
<Manager>
<ConfigurationFiles>
<SessionConfiguration File="TestOption1.valid.xml" Name="Option1" />
<SessionConfiguration File="TestOption2.valid.xml" Name="Option2" />
<SessionConfiguration File="TestOption1.Invalid.xml" Name="Option3" />
</ConfigurationFiles>
</Manager>
代码:
file = "config.xml"
parent = et.Element("ConfigurationFiles")
node = et.SubElement(parent, 'SessionConfiguration', Name='Option3', File='TestOption1.Invalid.xml')
tree = et.parse(file)
root = tree.getroot()
root.insert(2, node)
tree.write(file)
问题是我似乎无法插入 [ConfigurationFiles],但它出现在它之前。
<Manager>
<SessionConfiguration="TestOption1.Invalid.xml" Name="Option3" />
<ConfigurationFiles>
<SessionConfiguration File="TestOption1.valid.xml" Name="Option1" />
<SessionConfiguration File="TestOption2.valid.xml" Name="Option2" />
</ConfigurationFiles>
不要创建新的父元素。相反,获取对现有父元素的引用和 append 它的新元素。
原文config.xml:
<Manager>
<ConfigurationFiles>
<SessionConfiguration File="TestOption1.valid.xml" Name="Option1" />
<SessionConfiguration File="TestOption2.valid.xml" Name="Option2" />
</ConfigurationFiles>
</Manager>
代码:
from xml.etree import ElementTree as et
file = "config.xml"
tree = et.parse(file)
# Find the parent
parent = tree.find(".//ConfigurationFiles")
# Create the new element
node = et.Element('SessionConfiguration', Name='Option3', File='TestOption1.Invalid.xml')
# Append the new element
parent.append(node)
tree.write("config2.xml")
config2.xml 中的结果输出:
<Manager>
<ConfigurationFiles>
<SessionConfiguration File="TestOption1.valid.xml" Name="Option1" />
<SessionConfiguration File="TestOption2.valid.xml" Name="Option2" />
<SessionConfiguration File="TestOption1.Invalid.xml" Name="Option3" /></ConfigurationFiles>
</Manager>