Javascript XMLSerializer区分大小写

时间:2011-06-17 13:22:29

标签: javascript dom xml-serialization kml google-earth

我正在使用Javascript生成KML文档,我正在尝试使用XMLSerializer来生成XML文件,但即使我在DOM中以大写形式创建标记,它也会生成所有小写标记。

是用于破坏大小写还是XMLSerializer的DOM?有没有办法解决它或我错过了什么?我在Chrome和Firefox上都试过这个。

KML文档将导入Google地球,似乎不接受小写标记。

3 个答案:

答案 0 :(得分:1)

以下在XHTML页面中的FF 5 beta中为我(保留案例)工作:

   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>test</title>
        <script type="text/javascript">
            function test() {
                var kml = document.getElementsByTagName("kml").item(0);
                window.alert (new XMLSerializer().serializeToString(kml));
            }
        </script>
    </head>
    <body onload="test()">
<kml id="kml" xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <name>KML Samples</name>
    <open>1</open>
    <description>samples</description>
    <Style id="downArrowIcon">
      <IconStyle>
        <Icon>
          <href>http://maps.google.com/mapfiles/kml/pal4/icon28.png</href>
        </Icon>
      </IconStyle>
    </Style>
  </Document>
</kml>
    </body>
</html>

答案 1 :(得分:1)

根据FF4中的测试,以下内容将起作用:

  1. 使用document.createElementNS ("http://www.opengis.net/kml/2.2", elementName)代替document.createElement(elementName)

  2. 使用elt.appendChild (document.createTextNode (text))代替elt.innerHTML = text

答案 2 :(得分:0)

如果添加大写字母的元素无关紧要,DOM会以小写形式管理它们。只需用firebug检查它,就不会看到大写标签。

如果您的doctype设置为XHTML,它甚至会违反标准合规性。

  XHTML中的

属性和元素必须全部为小写

更新:刚检查过以下内容:

var test = document.createElement("DIV");
// test.outerHTML returns "<div></div>"

因此,在创建元素时,它已被解析并转换为小写。