当使用prettify
时,我的DOCTYPE被分成三行。我怎样才能保持在一条线上?在
“中断”输出:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE smil
PUBLIC '-//W3C//DTD SMIL 2.0//EN'
'http://www.w3.org/2001/SMIL20/SMIL20.dtd'>
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
<head>
<meta base="rtmp://cp23636.edgefcs.net/ondemand"/>
</head>
<body>
<switch>
<video src="mp4:soundcheck/1/clay_aiken/02_sc_ca_sorry_256.mp4" system-bitrate="336000"/>
<video src="mp4:soundcheck/1/clay_aiken/02_sc_ca_sorry_512.mp4" system-bitrate="592000"/>
<video src="mp4:soundcheck/1/clay_aiken/02_sc_ca_sorry_768.mp4" system-bitrate="848000"/>
<video src="mp4:soundcheck/1/clay_aiken/02_sc_ca_sorry_1128.mp4" system-bitrate="1208000"/>
</switch>
</body>
</smil>
剧本:
^{pr2}$
在查看了当前的脚本和您在这个主题上提出的其他问题之后,我认为使用字符串操作构建smil文件可以使您的生活更简单。在
文件中几乎所有的xml都是静态的。要正确处理的唯一数据是
video
标记的属性值。为此,在标准库中有一个方便的函数,它完全可以满足您的需要:xml.sax.saxutils.quoteattr。在因此,考虑到这些要点,这里有一个脚本应该更容易使用:
我认为你至少有三种选择:
接受新台词就行了。他们可能不受欢迎和丑陋,但他们是完全合法的。
添加一个用更好的DOCTYPE替换坏DOCTYPE的kludge。也许是这样的:
使用功能更丰富的XML包。lxml浮现在脑海中;它主要与ElementTree兼容。通过使用lxml的^{} 函数,您将不需要
^{pr2}$prettify
函数,并且DOCTYPE将按您的需要显示出来。示例:输出:
我认为不可能删除
Node.toprettyxml
为DOCTYPE
生成的新行,至少以python的方式。在它是} module 的第1284行开始,插入有问题的新行。插入的换行字符串最初来自
DocumentType
类的writexml
方法,它从^{Node.toprettyxml
方法,并通过Document
类的writexml
方法传递。同样的换行字符串也被传递到Node
的其他各种子类的writexml
方法。在对Node.prettyxml
的调用中更改换行字符串将更改整个输出的XML中使用的换行字符串。在有各种各样的破解方法:修改
minidom
模块的本地副本,DocumentType
类的writexml
方法,或者对XML字符串进行后处理以删除不需要的新行。然而,这些方法都不吸引我。在对我来说,最好的办法似乎是让事情保持原样。将
DOCTYPE
拆分成多行真的是一个严重的问题吗?在相关问题 更多 >
编程相关推荐