【问题标题】:whatever be the XML file root is always showing as none why? [duplicate]无论 XML 文件根目录是什么,总是显示为无,为什么? [复制]
【发布时间】:2017-05-28 05:35:58
【问题描述】:
from xml.etree.ElementTree import ElementTree

from xml.etree.ElementTree import Element

import xml.etree.ElementTree as etree

tree= etree.parse(r'N:\myinternwork\files xml of bus systems\sample.xml','r')

root= tree.getroot()

print(root)

【问题讨论】:

  • 任何人都可以删除问题的否决票,我现在无法提问。在提出问题的时候,我是堆栈溢出的新手,我不太了解。现在我阅读了提问的基本先决条件。提前致谢!

标签: python xml


【解决方案1】:

你没有解析文件sample.xml,因为你提供的第二个参数('r'),如果你这样做了例如:

tree= etree.parse(open(r'N:\myinternwork\files xml of bus systems\sample.xml','r'))

tree= etree.parse(r'N:\myinternwork\files xml of bus systems\sample.xml')

根据the xml doc:

xml.etree.ElementTree.parse(source, parser=None) 将 XML 部分解析为元素树。 source 是包含 XML 数据的文件名或文件对象。 parser 是一个可选的解析器实例。如果未给出,则使用标准 XMLParser 解析器。返回一个 ElementTree 实例。

您的代码有两行根本没有使用:

from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element

更大的问题是它会抛出错误:

AttributeError: 'str' object has no attribute 'close'

在 Python 2 和 3 上

因此,您似乎没有运行您在问题中提供的非最小示例代码。

在文件/tmp/xx.xml 中使用来自 w3schools.com 的 this 示例 1:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

我可以交互地运行它:

$ python
Python 3.6.1 (default, Mar 22 2017, 11:20:29) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import xml.etree.ElementTree as etree
>>> tree = etree.parse('/tmp/xx.xml')
>>> print(tree)
<xml.etree.ElementTree.ElementTree object at 0x7ff247570e10>
>>> root = tree.getroot()
>>> print(root)
<Element 'note' at 0x7ff24756d7c8>
>>> 

【讨论】:

  • “你正在解析元组”是一种奇怪的解释问题的方式。 parse() 函数确实采用可选的第二个参数,但该参数必须是 XMLParser 对象,而不是字符串。此外,您正在链接到 lxml 文档,但 OP 没有使用 lxml。
  • @mzjn 糟糕,我查看的文档有误(谷歌搜索etree.parse()
  • import xml.etree.ElementTree as etree tree= etree.parse(r'N:\myinternwork\files xml of bus systems\sample.xml')) root= tree.getroot() print( root) 即使现在输出也没有任何帮助?
  • @nikhilvaliveti 请不要将代码放在注释中,它不可读。确保您的 XML 正确/编辑您的帖子以包含 XML。我会用我曾经测试过的内容更新我的帖子。
  • 我是堆栈溢出的新手@Anthon 我没有找到任何显示 xml 的地方并想把它放在这里,但没有选项可以格式化它,这就是我这样做的原因
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多