Javascript Python lxml库无法解析&;书信电报;及;燃气轮机;
我有一个包含javascript的XSLT,它使用“<;”和“>;”inside for循环Javascript Python lxml库无法解析&;书信电报;及;燃气轮机;,javascript,python,xml,xml-parsing,lxml,Javascript,Python,Xml,Xml Parsing,Lxml,我有一个包含javascript的XSLT,它使用“<;”和“>;”inside for循环 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> </head
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head> </head>
<body>
<script language="javascript" type="text/javascript">
function example() {
var trs = document.getElementsByTagName("tr");
for (var i = 0; i < trs.length; i++) {
}
}
</script>
</body>
</html>
但LXML无法替换输出HTML文件中的特殊字符
<;到“
是否有使用LXML替换“<;”到“的标准做法为了解码/转换HTML实体,您应该在
tostring()调用中使用method=“HTML”
:
ET.tostring(content, method="html", pretty_print=True)
或:
演示:
从lxml导入etree
text=”“”
1 2
"""
tree=etree.fromstring(文本)
打印etree.tostring(树,method=“html”)
印刷品:
<html>
<body>
<script> 1 < 2 </script>
</body>
</html>
1 < 2
您也可以将脚本内容包围在CDATA包装中,以防止其被吃掉,如下所示:
<script language="javascript" type="text/javascript">
<![CDATA[
function example() {
var trs = document.getElementsByTagName("tr");
for (var i = 0; i < trs.length; i++) {
}
}
]]>
</script>
我注意到,只有当标签是“脚本”,而不是“身体”或其他东西时,这个技巧才有效。
lxml.html.tostring(content, pretty_print=True)
from lxml import etree
text = """<html>
<body>
<script> 1 < 2 </script>
</body>
</html>
"""
tree = etree.fromstring(text)
print etree.tostring(tree, method="html")
<html>
<body>
<script> 1 < 2 </script>
</body>
</html>
<script language="javascript" type="text/javascript">
<![CDATA[
function example() {
var trs = document.getElementsByTagName("tr");
for (var i = 0; i < trs.length; i++) {
}
}
]]>
</script>