簡體   English   中英

Javascript XMLSerializer區分大小寫

[英]Javascript XMLSerializer case sensitive

我正在使用Javascript生成一個KML文檔,我正在嘗試使用XMLSerializer來生成XML文件,但即使我在DOM中創建了大寫標簽,它也會生成所有小寫標簽。

是DOM會破壞大小寫還是XMLSerializer? 有沒有辦法解決它或我錯過了什么? 我在Chrome和Firefox上都試過這個。

KML文檔將導入Google地球,似乎不接受小寫標記。

以下在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>

基於FF4中的測試,以下內容將起作用:

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

  2. 使用elt.appendChild (document.createTextNode (text))而不是elt.innerHTML = text

如果你用大寫字母添加元素沒關系,DOM總是以小寫形式管理它們。 只需用firebug檢查它,你就不會看到大寫標簽。

如果您的doctype設置為XHTML,它甚至會違反標准合規性。

在XHTML中,屬性和元素必須全部為小寫

更新:剛剛檢查過以下內容:

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

因此,當您創建元素時,它正在被解析並轉換為小寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM