【问题标题】:lxml.etree.XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1lxml.etree.XMLSyntaxError:需要开始标记,未找到“<”,第 1 行,第 1 列
【发布时间】:2016-02-20 22:14:14
【问题描述】:

这应该很简单,所以不知道为什么我在标题中收到错误。创建的 SVG 很好,因为我手动检查过

code to generate svg
....

mod_svg = 'final1.svg'
tree.write(mod_svg)

import cairosvg
fileout = open('finaltree','w')
cairosvg.svg2png(bytestring=mod_svg,write_to=fout)
fileout.close()

我在 pythonanywhere 上使用 python 2.7,以防万一。

完整的回溯

Traceback (most recent call last):
  File "/home/drdavepier/mysite/flask_app.py", line 184, in <module>
    cairosvg.svg2png(bytestring=mod_svg,write_to=fout)
  File "/usr/local/lib/python2.7/dist-packages/cairosvg/__init__.py", line 43, in <lambda>
    surface_type.convert(*args, **kwargs))(_surface_type)
  File "/usr/local/lib/python2.7/dist-packages/cairosvg/surface/__init__.py", line 82, in convert
    tree = Tree(**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/cairosvg/parser.py", line 270, in __init__
    tree = ElementTree.fromstring(bytestring)
  File "lxml.etree.pyx", line 3032, in lxml.etree.fromstring (src/lxml/lxml.etree.c:68121)
  File "parser.pxi", line 1786, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:102470)
  File "parser.pxi", line 1674, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:101299)
  File "parser.pxi", line 1074, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:96481)
  File "parser.pxi", line 582, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:91290)
  File "parser.pxi", line 683, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:92476)
  File "parser.pxi", line 622, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:91772)
lxml.etree.XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1

相关 SVG 的开头行

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Created with matplotlib (http://matplotlib.org/) --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="432pt" version="1.1" viewBox="0 0 576 432" width="576pt">

树的初始化:

filename = "/path/to/file.svg"
with open( filename, 'r') as infile:
    tree = etree.parse( infile )

【问题讨论】:

  • 请发布完整的回溯。
  • 我猜你初始化变量树的地方是错误所在。 XML 阅读器可能期待像 这样的东西,而您有其他东西来代替它。
  • 谢谢,我添加了更多信息
  • 也许在调用前打印出你的字节串,看看第一个字符是什么?

标签: python svg pythonanywhere


【解决方案1】:

文本中有特殊字符

def transference(value):
    value = value.replace("<","&lt;")
    value = value.replace(">", "&gt;")
    value = value.replace("&", "&amp;")
    value = value.replace(r'"', "&quot;")
    value = value.replace(r"'", "&apos;")
    value = value.replace("×", "&times;")
    value = value.replace("÷", "&divide;")
    return value

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 2017-02-17
    • 2015-10-30
    • 2018-03-24
    • 2019-02-22
    • 1970-01-01
    • 2011-02-13
    • 2016-06-23
    • 2011-02-12
    相关资源
    最近更新 更多