Python XML 'TypeError: должен быть xml.etree.ElementTree.Element, а не str'
В настоящее время я пытаюсь создать XML файл из CSV файла. В настоящее время мой код читает файл CSV для данных и начинает создавать XML из данных, которые хранятся в CSV.
Пример CSV:
Element,XMLFile
SubElement,XMLName,XMLFile
SubElement,XMLDate,XMLName
SubElement,XMLInformation,XMLDate
SubElement,XMLTime,XMLName
Ожидаемый результат:
<XMLFile>
<XMLName>
<XMLDate>
<XMLInformation />
</XMLDate>
<XMLTime />
</XMLName>
</XMLFile>
В настоящее время мой код пытается посмотреть на CSV, чтобы узнать, что родительский элемент для нового подэлемента:
# Defines main element
# xmlElement = xml.Element(XMLFile)
xmlElement = xml.Element(csvData[rowNumber][columnNumber])
# Should Define desired parent (FAIL) and SubElement name (PASS)
# xmlSubElement = xml.SubElement(XMLFile, XMLName)
xmlSubElement = xml.SubElement(csvData[rowNumber][columnNumber + 2], csvData[rowNumber][columnNumber + 1])
Когда код пытается использовать исходную строку CSV в качестве родительского параметра, Python 3.5 генерирует следующую ошибку:
TypeError: must be xml.etree.ElementTree.Element, not str
Известная причина ошибки заключается в том, что родительский параграф возвращается в виде строки, когда ожидается, что это элемент или подэлемент.
Можно ли вспомнить сохраненное значение из CSV и ссылаться на элемент Element или SubElement вместо строки? Цель состоит в том, чтобы позволить коду читать CSV файл и назначать любой SubElement родительскому элементу, указанному в CSV.
Я не могу точно сказать, но похоже, что вы делаете: ElementTree.SubElement(str, str)
когда вы должны делать: ElementTree.SubElement(Element, str)
Похоже, вы уже это знаете. Итак, реальный вопрос заключается в том, как вы собираетесь ссылаться на родительский объект, когда знаете только его строку тега? Вы можете искать Elements в ElementTree с этой конкретной строкой тега, но это, как правило, не очень хорошая идея, поскольку XML допускает несколько экземпляров подобных элементов.
Я бы предложил вам:
Найти стратегию хранения ссылок на родительские элементы
Посмотрите, есть ли способ однозначно идентифицировать родительский элемент с помощью XPath
- Вопросы
- Elementtree
- Python XML 'TypeError: должен быть xml.etree.ElementTree.Element, а не str'