Javascript XMLSerializer区分大小写
我正在用Javascript生成一个KML文档,并试图使用它来生成XML文件,但它生成了所有小写标记,尽管我在DOM中以大写字母创建了标记 是DOM破坏了大小写还是XMLSerializer?有没有办法绕过它或者我错过了什么?我在Chrome和Firefox上都试过了Javascript XMLSerializer区分大小写,javascript,dom,xml-serialization,kml,google-earth,Javascript,Dom,Xml Serialization,Kml,Google Earth,我正在用Javascript生成一个KML文档,并试图使用它来生成XML文件,但它生成了所有小写标记,尽管我在DOM中以大写字母创建了标记 是DOM破坏了大小写还是XMLSerializer?有没有办法绕过它或者我错过了什么?我在Chrome和Firefox上都试过了 KML文档将被导入Google Earth,它似乎不接受小写标记。添加大写字母的元素并不重要,DOM总是以小写字母管理它们。只要用firebug检查一下,你就看不到大写的标签了 如果您的doctype设置为XHTML,它甚至会违反
KML文档将被导入Google Earth,它似乎不接受小写标记。添加大写字母的元素并不重要,DOM总是以小写字母管理它们。只要用firebug检查一下,你就看不到大写的标签了 如果您的doctype设置为XHTML,它甚至会违反标准 在XHTML中,属性和元素必须全部小写 更新:仅检查以下内容:
var test = document.createElement("DIV");
// test.outerHTML returns "<div></div>"
var test=document.createElement(“DIV”);
//test.outerHTML返回“”
因此,当您创建元素时,它已经被解析并转换为小写。以下内容适用于我(保留大小写)在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>
测试
功能测试(){
var kml=document.getElementsByTagName(“kml”).item(0);
window.alert(新的XMLSerializer().serializeToString(kml));
}
KML样本
1.
样品
http://maps.google.com/mapfiles/kml/pal4/icon28.png
基于FF4中的测试,以下各项将起作用:
document.createElements(“http://www.opengis.net/kml/2.2“,elementName)
而不是document.createElement(elementName)
elt.appendChild(document.createTextNode(text))
而不是elt.innerHTML=text
Case-mangling听起来像是在以某种方式将文档视为HTML而不是XML。您有代码示例吗?@MatthewWilson创建KML结构然后序列化它的代码部分。它是在HTML5页面中执行的,不过这是一个HTML的东西。XML通常是区分大小写的,API应该是保留大小写的。我不知何故假设他在使用DOM的html页面中工作。当然,XML不会与Google一起工作,因为XML区分大小写。好的,所以KML嵌入在HTML中。我认为只要页面是XHTML并且名称空间被适当地声明就可以了。在您的测试中,“DIV”被转换为“DIV”,因为它是一个HTML元素,我希望序列化程序知道不要使用非HTML元素?正如您在本文中看到的,我正在处理一个单独的文档片段。干得好。比我想象的要简单。不确定这有多大帮助,因为您已经有了一个有效的KML结构,可以抓取并序列化。我正在用javascript从头开始构建我的KML文档。好的,我在发布的时候不知道。这很有效。谢谢有点恼人,你必须对每个元素都这样做。应该是使用片段命名空间的文档片段对象上的createElement函数。