gpt4 book ai didi

python - 转换自定义 XML 类语法的最佳方式

转载 作者:数据小太阳 更新时间:2023-10-29 01:56:47 26 4
gpt4 key购买 nike

使用 Python。

所以基本上我有一个类似 XML 的标记语法,但标记没有属性。所以<a>但不是 <a value='t'> .他们定期关闭 </a> .

这是我的问题。我有一些看起来像这样的东西:

<al>
1. test
2. test2
test with new line
3. test3
<al>
1. test 4
<al>
2. test 5
3. test 6
4. test 7
</al>
</al>
4. test 8
</al>

我想把它变成:

<al>
<li>test</li>
<li> test2</li>
<li> test with new line</li>
<li> test3
<al>
<li> test 4 </li>
<al>
<li> test 5</li>
<li> test 6</li>
<li> test 7</li>
</al>
</li>
</al>
</li>
<li> test 8</li>
</al>

我并不是真的在寻找一个完整的解决方案,而是在寻找正确的方向。我只是想知道这里的人将如何解决这个问题。仅正则表达式?为无属性标记语法编写完整的自定义解析器?破坏现有的 XML 解析器?等

提前致谢

最佳答案

我建议从以下开始:

from xml.dom.minidom import parse, parseString

xml = parse(...)
l = xml.getElementsByTagName('al')

然后遍历l中的所有元素,检查它们的文本子节点(以及递归的 <al> 节点)。

您可以立即在 Python 控制台中开始使用它。

删除文本节点很容易,然后使用 chunk.split('\n') 拆分文本 block 并添加 <li>根据需要返回节点。

修改所有<al>后您可以调用 xml.toxml() 的节点将生成的 xml 作为文本获取。

请注意,您从中获得的元素对象链接回原始 xml文档对象,所以不要删除 xml过程中的对象。

我个人认为这种方式比使用多行正则表达式进行处理更直接、更易于调试。

关于python - 转换自定义 XML 类语法的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6711424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com