Javascript Python lxml库无法解析&;书信电报;及;燃气轮机;

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

我有一个包含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>
  <body>
    <script language="javascript" type="text/javascript">
  function example() {
        var trs = document.getElementsByTagName("tr");
    for (var i = 0; i &lt; 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 &lt; 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>