如何在javascript中显示xml?

Rob*_*uld 5 javascript xml

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

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

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

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

Dio*_*ane 12

使用Ajax获取XML并简单地将结果放入textarea.以任何您想要的方式设置textarea样式.


And*_*son 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>
Run Code Online (Sandbox Code Playgroud)


Dan*_*ira 7

如果您希望浏览器呈现您的XMLas XML,它必须位于它自己的文档中,如a iframe或a frame.DIV不会做这个工作!

此外,在您应该发送HTTP的请求的标题中,所以浏览器可以理解这个内容是一个.iframeContent-Type: text/xmlXML

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

结论: The browser无法渲染XMLHTML在同一文件中.如果您需要它,您只需要解决它.

  • Internet Explorer可以在同一文档中呈现XML和HTML,只需将XML嵌入到<xmp> </ xmp>标记中即可.不是推荐,因为我认为它已被删除(当然只适用于IE),只是一个FYI. (2认同)

Tom*_*lak 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);
Run Code Online (Sandbox Code Playgroud)

#targetDiv 可以使用CSS设置样式:

#targetDiv {
  font-family: fixed;
  white-space: pre;
}
Run Code Online (Sandbox Code Playgroud)