2011-11-07 86 views
0

从我的后端检索包含一些xml数据的字符串。当我显示这个(现在只是@ Model.XM)L我看到一个很好的包含xml数据的长字符串。无论如何要将其设置为树形结构?像一个jQuery插件或什么的?我尝试了一些谷歌,但无法找到它。在HTML页面中显示XML字符串

在页面上也是其他数据,它不仅是xml数据。

回答

1

您只需要一个递归循环,将XML文档的子节点转换为HTML列表元素。试试类似的东西(未经测试):

var html = '<ul><li>' + xml.documentElement.nodeName + '</li>'; 
var html += displayTree(xml); 
var html += '</ul>'; 

function displayTree(xml) { 
    var str = ''; 
    if ($(xml).children().length) { 
     str += '<ul>'; 
     $(xml).children().each(function() { 
      str += '<li>' + this.nodeName + '</li>'; 
     }); 
     str += '</ul>'; 
     str += displayTree(xml.childNodes); 
    }); 
    return str; 
} 
-1

您可以使用XSLT。

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

    <xsl:template match="node()|@*"> 
     <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

的关键是

<xsl:output indent="yes"/> 

如果应用上述转换到你的XML,它会出来正确缩进。 更多详细信息:

+0

我同意XSLT是最好的使用方法,但上面的代码会简单地“漂亮地打印”XML。您需要转换或添加XHTML标记,以确保输出在XHTML中打印为正常列表。 –

+0

为什么列表?这个问题只提到了一个树结构,我认为这意味着适当的缩进 – Guillaume