如何使用任何脚本(python/shell)自动插入和解析xml元素?

如何使用任何脚本(python/shell)自动插入和解析xml元素?,python,shell,Python,Shell,这是链接中问题的延伸:- 如果我使用Python3,在那里我有元素树,它工作得很好。如果我没有Python3(因为我目前使用的版本是2.6,无法升级),如何使用xml_声明标志true写入xml文件? 解析时,xml标志似乎已被删除。 基本上,我在解析xml时遇到错误:- org.xml.sax.SAXParseException; systemId: file:config.xml; lineNumber: 1; columnNumber: 1; file:config.xml<

这是链接中问题的延伸:-

如果我使用Python3,在那里我有元素树,它工作得很好。如果我没有Python3(因为我目前使用的版本是2.6,无法升级),如何使用xml_声明标志true写入xml文件? 解析时,xml标志似乎已被删除。 基本上,我在解析xml时遇到错误:-

 org.xml.sax.SAXParseException; systemId: file:config.xml; lineNumber: 1; 
 columnNumber: 1; file:config.xml<Line 1, Column 1>: XML-20108: (Fatal Error) Start of root element expected.[[
    at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:425)
    at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:290)
    at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:476)
    at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:417)
    at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:287)
    at oracle.ossmgmt.common.util.xml.XMLUtilityParser.validate(XMLUtilityParser.java:141)
    at oracle.ossmgmt.common.util.xml.XMLUtilityParser.initParse(XMLUtilityParser.java:256)
    at oracle.ossmgmt.common.util.xml.XMLUtility.initParse(XMLUtility.java:381)
但这里我得到的错误如下:-

Traceback (most recent call last):
File "b.py", line 10, in <module>
    temp = ET.Element(param3)
File "lxml.etree.pyx", line 2346, in lxml.etree.Element 
(src/lxml/lxml.etree.c:46617)
File "apihelpers.pxi", line 113, in lxml.etree._makeElement 
(src/lxml/lxml.etree.c:10475)
File "apihelpers.pxi", line 1405, in lxml.etree._tagValidOrRaise 
(src/lxml/lxml.etree.c:21541)
ValueError: Invalid tag name u'Attribute NAME="EFG" VALUE="1234"'
回溯(最近一次呼叫最后一次):
文件“b.py”,第10行,在
温度=ET.Element(参数3)
文件“lxml.etree.pyx”,第2346行,在lxml.etree.Element中
(src/lxml/lxml.etree.c:46617)
文件“apihelpers.pxi”,第113行,在lxml.etree.\u makeElement中
(src/lxml/lxml.etree.c:10475)
文件“apihelpers.pxi”,第1405行,在lxml.etree中。\u tagValidOrRaise
(src/lxml/lxml.etree.c:21541)
ValueError:无效的标记名u'Attribute name=“EFG”VALUE=“1234”'

我不确定您想要的终端结构是什么,但是:

seq = 'Attribute NAME="EFG" VALUE="1234"'
param3 = seq
temp = ET.Element(param3)
很可能是这样的:

seq = 'Attribute' 
#Create element <Attribute>
temp = ET.Element(seq)
#Set attributes of <Attribute>
temp.set("NAME","EFG") 
temp.set("VALUE","1234")
seq='Attribute'
#创建元素
温度=ET.元件(序号)
#设置属性
温度设置(“名称”、“EFG”)
温度设置(“值”、“1234”)

目前我正在执行out=open(param1,'w')out.write('+'\n')tree.\u write(out,tree.\u root,'utf-8',{})我尝试使用lxml,但出现了一个错误。@snakecharmerb-用错误更新问题
temp=ET.Element('Attribute NAME=“EFG”VALUE=“1234”)
。这似乎不是传递给ET.Element构造函数的有效字符串。@packman-当您使用-import xml.etree.ElementTree as ET import xml.etree.celementree as ET时,它可以正常工作。唯一的问题是没有定义xml_声明,所以使用lxml。你能建议如何使用它吗?这很有效。。。谢谢……但实际上我想要的最终结构是这样的:-为此我尝试了如下方法:“((主机=localhost,ip=222.2.2.2,端口=22,社区=public),(主机=localhost,ip={0},端口=22,社区=public))”。格式(主机1)请您对此提出建议好吗?@P Ackerman-我如何使其与python 2和python 3兼容?您的解决方案可以工作,但我仍然无法理解为什么仍然出现异常:-config.xml:xml-20108:(致命错误)预期根元素的开始。[[在oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:425)在oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:290)在oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:476)@Pyjava,您只需将以下行更改为:
temp.set(“VALUE”,“1234”)
temp.set(“VALUE”,“VALUE”((主机=本地主机,ip=222.2.2,端口=22,社区=公共),(host=localhost,ip={0},port=22,community=public)).format(host1))
@P Ackerman-这很好,但如何消除xml错误。它似乎在插入时被删除,可能结构也被扭曲,这使得xml无效。上述解决方案可以工作,但在python 2.6的根目录下不需要解析器
seq = 'Attribute' 
#Create element <Attribute>
temp = ET.Element(seq)
#Set attributes of <Attribute>
temp.set("NAME","EFG") 
temp.set("VALUE","1234")