【问题标题】:Why is etree.tostring() not working for different methods?为什么 etree.tostring() 不适用于不同的方法?
【发布时间】:2015-06-25 19:32:23
【问题描述】:

我正在学习 XML,正在尝试以下练习代码:

root = etree.XML('<html><head/><body><p>Hello<br/>World</p></body></html>')
etree.tostring(root, method='xml')
print(etree.tostring(root))
etree.tostring(root, method='html') 
print(etree.tostring(root))
etree.tostring(root, method='text') 
print(etree.tostring(root))

在练习中,它说如果我这样做,我应该得到 3 个不同格式的 root 输出字符串:xml、html 和文本。但是,我只得到 3 个 XML 格式的输出。

我在这里缺少什么?我应该进口一些东西吗?我的怀疑是 etree.XML 分配部分有问题,但正如我所说:我只是按照这里的指示进行操作。人们认为哪里不对劲?

【问题讨论】:

    标签: python xml xml.etree


    【解决方案1】:

    tostring() 调用的结果确实不同,但每次都丢失了,而是打印了 3 次 same 表达式。 (请注意,tostring() 正在返回结果,没有修改其参数。)

    如果您改为运行此脚本:

    from lxml import etree
    
    root = etree.XML('<html><head/><body><p>Hello<br/>World</p></body></html>')
    print(etree.tostring(root, method='xml'))
    print(etree.tostring(root, method='html'))
    print(etree.tostring(root, method='text'))
    

    你会得到你期望的输出:

    <html><head/><body><p>Hello<br/>World</p></body></html>
    <html><head></head><body><p>Hello<br>World</p></body></html>
    HelloWorld
    

    【讨论】:

    • 嗯,现在我收到一个错误,指向“从 lxml 导入 etree”错误说“没有名为 lxml 的模块”。不过,如果我不考虑那条线,它似乎会起作用。感谢您的帮助。
    猜你喜欢
    • 2020-09-25
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多