首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析Python中没有根节点的XML文件

解析Python中没有根节点的XML文件
EN

Stack Overflow用户
提问于 2020-02-15 05:01:40
回答 3查看 1.3K关注 0票数 1

我的客户端希望我解析100,00个xml文件并将它们转换成文本文件。

我已经成功地解析了几个文件并将它们转换为文本文件。但是,通过编辑xml并在xml文件中添加<root></root>,我成功地做到了这一点。

这看起来效率很低,因为我必须编辑近100,00个xml文件才能达到我想要的结果。

无论如何,我的python代码是否识别第一个节点并将其作为根节点读取?

我尝试过使用中显示的方法,但是我不完全理解它,也不知道在哪里实现它。

XML格式如下:

代码语言:javascript
复制
<Thread>
   <ThreadID></ThreadID>
   <Title></Title>
   <InitPost>
        <UserID></UserID>
        <Date></Date>
        <icontent></icontent>
  </InitPost>
  <Post>
       <UserID></UserID>
       <Date></Date>
       <rcontent></rcontent>
  </Post>
</Thread>

这是我关于如何解析XML文件的代码:

代码语言:javascript
复制
import os
from xml.etree import ElementTree


saveFile = open('test3.txt','w')

for path, dirs, files in os.walk("data/sample"):
   for f in files:
    fileName = os.path.join(path, f)
    with open(fileName, "r", encoding="utf8") as myFile:
        dom = ElementTree.parse(myFile)

        thread = dom.findall('Thread')

        for t in thread:

            threadID = str(t.find('ThreadID').text)
            threadID = threadID.strip()

            title = str(t.find('Title').text)
            title = title.strip()

            userID = str(t.find('InitPost/UserID').text)
            userID = userID.strip()

            date = str(t.find('InitPost/Date').text)
            date = date.strip()

            initPost = str(t.find('InitPost/icontent').text)
            initPost = initPost.strip()

        post = dom.findall('Thread/Post')

其余的代码只是写入输出文本文件。

EN

Stack Overflow用户

回答已采纳

发布于 2020-02-15 10:38:11

以文本形式加载xml并使用根元素对其进行包装。

'1.xml‘是您发布的xml

代码语言:javascript
复制
from xml.etree import ElementTree as ET

files = ['1.xml'] # your list of files goes here
for file in files:
    with open(file) as f:
        # wrap it with <r>
        xml = '<r>' + f.read() + '</r>'
        root = ET.fromstring(xml)
        print('Now we are ready to work with the xml')
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60235975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档