在asp.net页面中显示xml的代码有什么错误?

在asp.net页面中显示xml的代码有什么错误?,asp.net,Asp.net,这是我的XML文件。它以字符串形式从Nvarchar记录中使用sql数据源从sql数据表中获取 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="Artist.xsl"?> <artists> <artist> <name>KATY PERRY</name> <id>1</id></arti

这是我的XML文件。它以字符串形式从Nvarchar记录中使用sql数据源从sql数据表中获取

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Artist.xsl"?>
<artists>
<artist>
<name>KATY PERRY</name>
<id>1</id></artist>
<artist>
<name>SNOOP DOGG</name>
<id>2</id>
</artist>
</artists> 




评论:
当我运行页面时,我得到的输出是


有人能帮我弄清楚为什么xml不显示为html吗。我尝试过改变文字Artistlabel模式,但没有成功。甚至玩过XSL文件及其位置吗?

当您简单地告诉ASP.NET在文本中显示XML时,您并没有真正应用XSLT。您必须单独应用XSLT。从中,您可以了解如何转换XML:

XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ;
XslCompiledTransform myXslTrans = new XslCompiledTransform();
myXslTrans.Load(myStyleSheet);
XmlTextWriter myWriter = new XmlTextWriter("result.html",null);
myXslTrans.Transform(myXPathDoc,null,myWriter);

请注意,示例是写入文件,但您会写入字符串。然后,您必须在每个绑定行的事件中执行此操作,并生成所需的HTML。

您正在从数据库中读取作为nvarchar类型的xml。这将把它看作一个字符串,而不是XML。将字符串转换为xml,它应该可以工作

假设您将xml作为字符串从数据库中的变量“xmlString”中提取。 将其转换为xml文档

      XmlDocument xdoc= new XmlDocument();
      xdoc.loadXml(xmlString);

明白了我用这个在codebehind中的Itemdatabound上

 If e.Item.ItemType = ListViewItemType.DataItem Then
        Dim m As String = File.ReadAllText(Server.MapPath("Artist.xsl"))
        Dim kim As Literal = e.Item.FindControl("Artistslabel")
        Dim output As String
        Using srt As New System.IO.StringReader(m), sri As New IO.StringReader(kim.Text)
            Using xrt As XmlReader = XmlReader.Create(srt), xri As XmlReader = XmlReader.Create(sri)
                Dim xslt As New XslCompiledTransform()
                xslt.Load(xrt)
                Using sw As New System.IO.StringWriter(), xwo As XmlWriter = XmlWriter.Create(sw, xslt.OutputSettings)
                    xslt.Transform(xri, xwo)
                    output = sw.ToString
                End Using
            End Using
        End Using
        kim.Text = output
    End If

谢谢,我用了你的方法,它奏效了。我已经提交了我的代码作为答案。你不需要使用这个。我已经在下面提交了我的代码。谢谢
      XmlDocument xdoc= new XmlDocument();
      xdoc.loadXml(xmlString);
 If e.Item.ItemType = ListViewItemType.DataItem Then
        Dim m As String = File.ReadAllText(Server.MapPath("Artist.xsl"))
        Dim kim As Literal = e.Item.FindControl("Artistslabel")
        Dim output As String
        Using srt As New System.IO.StringReader(m), sri As New IO.StringReader(kim.Text)
            Using xrt As XmlReader = XmlReader.Create(srt), xri As XmlReader = XmlReader.Create(sri)
                Dim xslt As New XslCompiledTransform()
                xslt.Load(xrt)
                Using sw As New System.IO.StringWriter(), xwo As XmlWriter = XmlWriter.Create(sw, xslt.OutputSettings)
                    xslt.Transform(xri, xwo)
                    output = sw.ToString
                End Using
            End Using
        End Using
        kim.Text = output
    End If