尝试解析 xml 会抛出 FileNotFoundError

问题描述 投票:0回答:1

Python 新手,我所做的只是解析一个简单的 xml 字符串。但是当我这样做时,Et.parse 上显示“没有这样的文件或目录”。我也尝试说

Et.parse(Et.fromstring(xmlfile))
但这仍然会导致略有不同的异常。请帮忙。

import xml.etree.ElementTree as ET


thisDict={}

def parseXML(xmlfile):
  tree = ET.parse(xmlfile)
  root=tree.getroot()
  for package in root.findall('package'):
    if package is None:
        continue
    if 'id' in package.attrib:
       thisDict['package']=package.get('id')
    if 'version' in package.attrib:
       thisDict['version']=package.get('version')

  for x, y in thisDict.items():
    print(x, y)


xmlstr=f'''<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Castle.Core" version="5.1.1" targetFramework="net481" />
  <package id="Moq" version="4.18.4" targetFramework="net481" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net481" />
  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net481" />
  <package id="xunit" version="2.4.2" targetFramework="net481" />
  <package id="xunit.abstractions" version="2.0.3" targetFramework="net481" />
  <package id="xunit.analyzers" version="1.0.0" targetFramework="net481" />
  <package id="xunit.assert" version="2.4.2" targetFramework="net481" />
  <package id="xunit.core" version="2.4.2" targetFramework="net481" />
  <package id="xunit.extensibility.core" version="2.4.2" targetFramework="net481" />
  <package id="xunit.extensibility.execution" version="2.4.2" targetFramework="net481" />
  <package id="xunit.runner.visualstudio" version="2.4.5" targetFramework="net481" developmentDependency="true" />
</packages>'''

parseXML(xmlstr)
python xml elementtree
1个回答
0
投票

你可以使用

root = ET.fromstring(xmlstr)

根据文档

原因是当您使用

tree = ET.parse(xmlfile)
时,它会搜索文件而不是字符串

© www.soinside.com 2019 - 2024. All rights reserved.