正如问题所述,它只是逃脱了我的记忆如何在javascript中显示xml,我想在页面上的div中显示一些源xml,它位于另一个div中xml的处理结果旁边。如何在javascript中显示xml?
不记得,如果有一个相当于JavaScript的逃生实体转换客户
注意上:将XML文件是担任从服务器,所以我需要一个客户端解决方案
注意:主要的问题是XML并不在大多数浏览器,所有的括号和属性消失正确渲染,让你用文本看起来并不像XML
正如问题所述,它只是逃脱了我的记忆如何在javascript中显示xml,我想在页面上的div中显示一些源xml,它位于另一个div中xml的处理结果旁边。如何在javascript中显示xml?
不记得,如果有一个相当于JavaScript的逃生实体转换客户
注意上:将XML文件是担任从服务器,所以我需要一个客户端解决方案
注意:主要的问题是XML并不在大多数浏览器,所有的括号和属性消失正确渲染,让你用文本看起来并不像XML
如果您希望浏览器呈现你XML
为XML
,它必须在它自己的文件,像iframe
,或frame
。 DIV
不会做这项工作!
此外,在服务于iframe
的请求的HTTP
标题中,您应发送Content-Type: text/xml
,以便浏览器可以了解此内容为XML
。
但是,如果你真的需要在DIV中看到它,你将不得不自己构建一个XML
渲染函数XML2HTML
。如果您的XML
字符串已经格式化(换行符和制表符),您可以使用HTML
PRE
标签。在这种情况下,您必须将<
替换为XML
字符串中的>
。
结论:The browser
无法在同一文档中呈现XML
和HTML
。如果你需要它,你只需要解决它。
一种技术是使用两个IFRAME设置为从所述服务器提供的相应的XML文件中的src属性的元素(假设它是通过一个虚拟目录曝光):
<iframe src="/myapp/Document1.xml"><iframe src="/myapp/Document2.xml">
或者,也可能使用AJAX类型请求来检索XML文档和然后将它们嵌入在HTML文档中动态地使用类似:
getElementById("myDiv").innerText = ajax.response;
这里有一个功能你:
<script type="text/javascript">
<!--
function xml_to_string(xml_node)
{
if (xml_node.xml)
return xml_node.xml;
else if (XMLSerializer)
{
var xml_serializer = new XMLSerializer();
return xml_serializer.serializeToString(xml_node);
}
else
{
alert("ERROR: Extremely old browser");
return "";
}
}
// display in alert box
alert(xml_to_string(my_xml));
// display in an XHTML element
document.getElementById("my-element").innerHTML = xml_to_string(my_xml);
-->
</script>
的问题是,你有逃跑的HTML解析器会解释为标记的字符:<,>,&,在某些情况下“和”
核心JavaScript不为你提供这个,但许多附加库做
如果您不想仅为此使用整个JavaScript框架...
function insertLiteral(literalString, targetElement)
{
var textNode = document.createTextNode(literalString);
targetElement.appendChild(textNode)
return textNode;
}
// test it (for the example, I assume #targetDiv is there but empty)
var xmlString = "<this><is_some><xml with='attributes' /></is_some></this>";
var targetElement = document.getElementById("targetDiv");
var xmlTextNode = insertLiteral(xmlString, targetElement);
#targetDiv
可以利用CSS定义样式:
#targetDiv {
font-family: fixed;
white-space: pre;
}
使用Ajax获取您的XML和简单地把结果在textarea
。以任何你想要的方式来设置textarea。
这是我发现显示XML作为同一页面上的文本复制和粘贴的最简单的方法:
var xml = document.getElementById('svg_element').innerHTML;
document.getElementById('svg_pre').innerText = xml;
问题XML不会在大多数浏览器正确地呈现,所有的括号和属性消失,留下的文字看起来不像xml – 2008-12-08 11:45:36
这两种技术都应该很好地显示它。请注意,第二种技术使用“innerText”而不是“innerHTML”,否则将会出现您所描述的内容。 – 2008-12-08 11:52:44
是的你是对的,没有注意到那里的“innerText”:) – 2008-12-08 11:59:30