使用正则表达式的 Python XML 重建

标签 python xml regex

我有这个部分 XML

   string = ''' 
   <x:root>
       <x:tag1 x:anyAttrib="anyValue" x:anyAttrib="anyValue" x:anyAttrib="anyValue" />
       <x:tag2 x:anyAttrib="anyValue" x:anyAttrib="anyValue" x:anyAttrib="anyValue">
          someValue
       </x:tag2>
       <x:tag3> someValue
    '''

现在我想“傻傻地”修复一下。 我想到了一种方法 - 对所有开始元素和结束元素进行正则表达式 --> 检查缺少哪个元素并添加它。当然,不要涉及太多细节。 到目前为止我得到的是(这不起作用):

import re
starts = re.compile('(?<=<)x:\w+(?=>)|(?<=<)x:\w+(?! .+ />)')
print(start.findall(string))

我期望的是 x:root 、 x:tag2 、 x:tag3 的列表

我一直在谷歌上搜索并尝试了很多,但找不到答案。 我从这个表达式中得到的唯一东西是 x:root 、 x:tag1 、 x:tag3。

请帮忙

谢谢

最佳答案

BeautifulSoup也许能够修复它:

import BeautifulSoup

content = ''' 
<x:root>
   <x:tag1 x:anyAttrib="anyValue" x:anyAttrib="anyValue" x:anyAttrib="anyValue" />
   <x:tag2 x:anyAttrib="anyValue" x:anyAttrib="anyValue" x:anyAttrib="anyValue">
      someValue
   </x:tag2>
   <x:tag3> someValue
'''

soup = BeautifulSoup.BeautifulStoneSoup(content)
print(soup.prettify())

产量

<x:root>
 <x:tag1 x:anyattrib="anyValue" x:anyattrib="anyValue" x:anyattrib="anyValue">
  <x:tag2 x:anyattrib="anyValue" x:anyattrib="anyValue" x:anyattrib="anyValue">
   someValue
  </x:tag2>
  <x:tag3>
   someValue
  </x:tag3>
 </x:tag1>
</x:root>

关于使用正则表达式的 Python XML 重建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077638/

相关文章:

正则表达式:以不同顺序匹配组而不重复组

python - 循环遍历 df 字典以合并 Pandas 中的 df

python - 在找到的边界python opencv中提取内容?

python - 在 Python 中从 XML 打印数据以列表样式(表格)

Java 正则表达式和匹配器

javascript - 如何在javascript中删除文件路径,只保留文件名,而不考虑文件系统

python - SQLAlchemy 多对多性能

python Pandas : Reindex DataFrame after Timezone conversion

java - 如何使用java将提问者文档转换为xml格式

java - XML 编码 : How to add an attribute from another namespace to an element