Мой клиент хочет, чтобы я проанализировал более 100,00 xml файлов и преобразовал их в текстовый файл.
Я успешно проанализировал пару файлов и преобразовал их в текстовый файл. Однако мне удалось это сделать, отредактировав xml и добавив <root></root>
в файл xml.
Это может показаться неэффективным, поскольку для достижения желаемого результата мне нужно отредактировать около 100,00 xml файлов.
В любом случае мой код python распознает первый узел и читать его как узел root?
Я пытался использовать метод, показанный в Python XML Синтаксический анализ без root, однако я не полностью понимаю, и я не знаю, где это реализовать.
Формат XML выглядит следующим образом:
<Thread>
<ThreadID></ThreadID>
<Title></Title>
<InitPost>
<UserID></UserID>
<Date></Date>
<icontent></icontent>
</InitPost>
<Post>
<UserID></UserID>
<Date></Date>
<rcontent></rcontent>
</Post>
</Thread>
И это мой код о том, как разобрать XML files:
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')
Остальная часть кода просто записывает в выходной текстовый файл.