如何在javascript中显示xml?

时间:2008-12-08 11:29:49

标签: javascript xml

正如问题所说,它只是逃避了我的记忆如何在javascript中显示xml,我想在页面上的div中显示一些源xml,它位于另一个div中xml的处理结果旁边。

不记得是否有相当于javascript的转义来转换客户端上的实体

注意:xml文件按原样从服务器提供,因此我需要一个客户端解决方案

注意:主要问题是XML在大多数浏览器中无法正确呈现,所有括号和属性都消失了,留下的文字看起来不像xml

7 个答案:

答案 0 :(得分:12)

使用Ajax获取XML,只需将结果放在textarea中。以任何你想要的方式设置textarea的样式。

答案 1 :(得分:8)

这是一个适合您的功能:

<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>

答案 2 :(得分:7)

如果您希望浏览器将XML呈现为XML iframe,则它必须位于自己的文档中,例如frame或{{{ 1}}。 DIV不会做这个工作!

此外,在为HTTP提供服务的请求的iframe标头中,您应发送Content-Type: text/xml,因此浏览器可以了解此内容为XML。< / p>

但是,如果你真的需要在DIV中看到它,你必须自己构建一个XML渲染函数XML2HTML。如果HTML字符串已经格式化(换行符和制表符),则可以使用XML PRE标记。在这种情况下,您必须将<替换为&gt;字符串中的XML

结论: The browser无法在同一文档中呈现XMLHTML。如果您需要它,您只需要解决它。

答案 3 :(得分:6)

如果您不想仅仅为此使用整个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;
}

答案 4 :(得分:3)

问题是你必须转义HTML解析器将解释为标记的字符:&lt;,&gt;,&amp;,在某些情况下“和'

核心JavaScript不会为您提供此功能,但许多附加库都可以。

例如,Prototype有:http://www.prototypejs.org/api/string/escapeHTML

答案 5 :(得分:1)

一种技术是使用两个iframe元素,并将src属性设置为服务器提供的相应xml文件(假设它通过虚拟目录公开):

<iframe src="/myapp/Document1.xml"><iframe src="/myapp/Document2.xml">

或者,您可以使用AJAX类型的请求来检索xml文档,然后使用以下内容将它们动态地嵌入到HTML文档中:

getElementById("myDiv").innerText = ajax.response;

答案 6 :(得分:1)

这是我发现在同一页面上将XML显示为文本以进行复制和粘贴的最简单方法:

var xml = document.getElementById('svg_element').innerHTML;
document.getElementById('svg_pre').innerText = xml;