我正在用Python生成一些XML代码。这个代码统计一个词在语料库中出现的次数,并将该词与一个数字(概率分布)相匹配。在
下面是一个XML示例:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<Durapipe type="int">1</Durapipe>
<EXPLAIN type="int">2</EXPLAIN>
<woods type="int">2</woods>
<hanging type="int">3</hanging>
<hastily type="int">2</hastily>
<key type="int" name="27p">1</key>
<localized type="int">1</localized>
<Schuster type="int">5</Schuster>
<regularize type="int">1</regularize>
....
</root>
下面是我用来生成这个的Python:
^{pr2}$稍后我运行XStream将其转换为Java映射。很遗憾,由于出现单词“key”时,XML代码中出现错误,XStream无法转换它。我一辈子都找不到错误。XML错误如下所示:
[致命错误]频率.xml:1:27582:元素类型“key”后面必须跟属性规范“>;”或“/>gt;”。 线程“main”中出现异常com.thoughtworks.xstream网站.io.流异常:元素类型“key”后面必须跟属性规范“>;”或“/>gt;”。在
所以我有三个问题:这个错误是什么?如何修复XML?如何修改Python代码以生成正确的XML?在
很抱歉这个冗长的问题,但我对Python和XML都缺乏经验。如果您能提供任何帮助,我们将不胜感激。提前谢谢!在
nltk.corpus.reuters.words()
返回一个列表,其中包含一些不能是有效XML元素名称的“单词”,例如,.'"
。在当
dicttoxml()
在afd
字典中遇到这样一个键时,它将生成一个名为“key”的元素,并生成一个包含原始(无效)名称的属性name
,例如显然,这是无效的XML,所有XML解析器都应该(正确地)抱怨它。
^{pr2}$xmllint
确实如此,而且您还发现XStream也有。dicttoxml()
没有将双引号("
)等字符替换为"
。要解决这个问题,您可以在运行dicttoxml()
之前调用键上的xml_escape()
(参见下面的dict理解):相关问题 更多 >
编程相关推荐