如何转义HTML页面中嵌入的XML代码段

时间:2018-09-06 12:44:50

标签: html xml escaping

我们正在为处理XML数据的后端构建WebUI。客户希望在GUI 中与常规HTML元素(例如标题,标签和输入字段)一起看到 XML

这里有一些伪代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>

        <title></title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
        <meta name="keywords" content=""/>
        <meta name="description" content=""/>

    </head>
    <body>
      <h1>Check Out that XML!</h1>

      <div>
        <!-- This does not work. Just to make clear what I want -->
        <?xml version="1.0" encoding="UTF-8"?>
        <note>
          <to>Tove</to>
          <from>Jani</from>
          <heading>Reminder</heading>
          <body>Don't forget me this weekend!</body>
        </note>
      </div>

      <p>What you see above is XML....</p>

    </body>
</html>

基本上,我们要实现的是创建一个区域(让我们说一个div),该区域在xhtml网站的中间显示一个XML文件。 (无法在多个窗口中进行分隔,因为我们需要与XML文件一起显示其他数据) 用户使用IE11,并且习惯于/依赖于浏览器窗口中纯XML附带的XML折叠功能。

存在什么方法

  • 在xhtml网站中显示XML
  • 突出显示XML(最好使XML中的值比标记大)
  • 允许用户折叠XML的一部分

我已经遵循的想法

  • 转义XML +使用prettify突出显示
    • 不折叠
    • 突出显示XML中的值不如IE

1 个答案:

答案 0 :(得分:0)

我构建了一个SAXHandler,它将所有内容转换为编码的字符串。 我使用的方法:

  • startCDATA()
  • endCDATA()
  • characters()
  • startElement()
  • endElement()

所有这些功能都写入到列表中。解析后,我将列表的内容用作结果。

我以Lev Muchnik的解决方案为重点: http://www.levmuchnik.net/Content/ProgrammingTips/WEB/XMLDisplay/DisplayXMLFileWithJavascript.html