我是python的新手,它尝试读取和添加由字符串表示的多个xml元素作为XML元素的子元素。
例如:
<student>
<name>abc</name>
<description>abcd</description>
<regno>200</regno>
</student>
我有一个字符串,可以表示其他学生信息,其中也可能包含嵌套信息。例如:
"<grade>100</grade><address-info><street>xyz</street><city>efgh</city><zip>505050</zip></address-info>"
我需要对此字符串进行解析并将其添加到student元素中, 导致类似
<student>
<name>abc</name>
<description>abcd</description>
<regno>200</regno>
<grade>100</grade>
<address-info>
<street>xyz</street>
<city>efgh</city>
<zip>505050</zip>
</address-info>
</student>
我尝试使用append方法导致错误
def add_cfg_under_correct_student(in_name, cfg_to_be_added, root):
if root is None:
return True
for student in root.findall('student'):
name = student.find('name')
if name.text != in_name:
continue
student.append(ET.fromstring(cfg_to_be_added))
return True
但是我得到了一个错误 追溯(最近一次通话): add_cfg_under_correct_student student.append(ET.fromstring(cfg_to_be_added))
lxml.etree.fromstring中的文件“ src / lxml / lxml.etree.pyx”,第3213行(src / lxml / lxml.etree.c:79003)
lxml.etree._parseMemoryDocument(src / lxml / lxml.etree.c:118334)中的文件“ src / lxml / parser.pxi”,第1848行
lxml.etree._parseDoc中的文件“ src / lxml / parser.pxi”,行1736(src / lxml / lxml.etree.c:117014)
lxml.etree._BaseParser._parseDoc中的文件“ src / lxml / parser.pxi”,行1102(src / lxml / lxml.etree.c:111258)
lxml.etree._ParserContext._handleParseResultDoc中的文件“ src / lxml / parser.pxi”,第595行(src / lxml / lxml.etree.c:105102)
lxml.etree._handleParseResult中的文件“ src / lxml / parser.pxi”,第706行(src / lxml / lxml.etree.c:106810)
lxml.etree._raiseParseError中的文件“ src / lxml / parser.pxi”,第635行(src / lxml / lxml.etree.c:105664) 文件“”,第1行
lxml.etree.XMLSyntaxError:文档末尾,第1行,第27列
然后我尝试使用ET.ElementTree(ET.fromstring(xmlstring)) this答案中建议的选项,但仍会收到类似的错误。
然后我在this问题中查找了一次添加多个元素的另一个答案,但这并不能完全解决我的情况。
上面问题中提到的解决方案是否在子元素上使用扩展工作,而子元素又可以在子元素之下?
请帮助