python - Python:通过从字符串读取将多个子元素附加到父元素
问题描述
我是 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>
<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>
我尝试使用导致错误的附加方法
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
但是我收到了一个错误,因为 Traceback(最近一次通话最后一次): add_cfg_under_correct_student student.append(ET.fromstring(cfg_to_be_added))
文件“src/lxml/lxml.etree.pyx”,第 3213 行,在 lxml.etree.fromstring (src/lxml/lxml.etree.c:79003)
文件“src/lxml/parser.pxi”,第 1848 行,在 lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:118334)
文件“src/lxml/parser.pxi”,第 1736 行,在 lxml.etree._parseDoc (src/lxml/lxml.etree.c:117014)
文件“src/lxml/parser.pxi”,第 1102 行,在 lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:111258)
文件“src/lxml/parser.pxi”,第 595 行,在 lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:105102)
文件“src/lxml/parser.pxi”,第 706 行,在 lxml.etree._handleParseResult (src/lxml/lxml.etree.c:106810)
文件“src/lxml/parser.pxi”,第 635 行,在 lxml.etree._raiseParseError (src/lxml/lxml.etree.c:105664) 文件“”,第 1 行
lxml.etree.XMLSyntaxError:文档末尾的额外内容,第 1 行,第 27 列
然后我尝试按照this answer中的建议使用 ET.ElementTree(ET.fromstring(xmlstring)) 选项,但仍然出现类似错误。
然后我在这个问题中查找了关于一次添加多个元素的另一个答案,但它并不能完全解决我的情况。
上述问题中提到的解决方案是否对子元素使用扩展工作,而这些子元素下也可能有子元素?
请帮忙
解决方案
推荐阅读
- python - 下面的说法有区别吗?
- android - 删除选定单元格的拖放
- c++ - 在 emplace_back() 中初始化内部结构
- mysql - 将 AWS 上的大型 MySQL 5.7 迁移到 Aurora 5.6
- python - 如何在龙卷风 websocket 处理程序中拒绝 websocket 握手
- assembly - 这是什么意思 x86 汇编代码是什么意思?
- swift - 使用 WKWebView 显示嵌入的推特时间线时,某些推文链接不起作用
- android - 为什么我的带有 RecyclerView 的 DiffUtil 不工作?
- ruby-on-rails - Dokku:远程应用程序容器无法启动
- css - 在移动设备上以更大尺寸加载横幅图像