2009-10-22 138 views
2

我该如何解决在xml元素中嵌入html锚点的问题?考虑以下xml:在XML文档中嵌入HTML锚点

<?xml version="1.0" encoding="utf-8"?> 
<Customers> 
    <Customer> 
      <FirstName>Joe</FirstName> 
      <LastName>Mama</LastName> 
      <Email><a href="mailto:[email protected]">[email protected]</a></Email> 
      <Website><a href="http://www.joemama.com">www.joemama.com</a></Website> 
    </Customer> 
</Customer> 

当我显示元素内容时,我只获取文本,没有超链接。

这里是我使用的显示在一个asp.net web表单页面的XML数据的代码:

CustomerView HTML

<%@ control language="vb" autoeventwireup="false" codebehind="CustomerView.ascx.vb" 
    inherits="Sparta.Web.CustomerView" %> 
<div class="View"> 
    <table> 
     <tr> 
      <td>First Name:</td> 
      <td><asp:label id="FirstName" runat="server"></asp:label></td> 
     </tr> 
     <tr> 
      <td>Last Name:</td> 
      <td><asp:label id="LastName" runat="server"></asp:label></td> 
     </tr> 
     <tr> 
      <td>Email:</td> 
      <td><asp:literal id="Email" runat="server"></asp:literal></td> 
     </tr> 
     <tr> 
      <td>Website:</td> 
      <td><asp:literal id="Website" runat="server"></asp:literal></td> 
     </tr> 
    </table> 
</div> 

CustomerView代码隐藏

Public Partial Class CustomerView 
    Inherits System.Web.UI.UserControl 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
      Me.DataBind() 
    End Sub 

    Private Sub DataBind() 

     Dim xmlDoc As System.Xml.Linq.XDocument = Nothing 
     xmlDoc = XDocument.Load(Server.MapPath("~/data/CustomerData.xml")) 

     Dim listQuery = _ 
     From list In xmlDoc.Descendants("Customer") _ 
     Where list.Element("LastName").Value = Request.QueryString("id") _ 
     Select _ 
     FirstName = list.Element("FirstName").Value, _ 
     LastName= list.Element("LastName").Value, _ 
     Email = list.Element("Email").Value, _ 
     Website = list.Element("Website").Value 

     Dim listInfo = listQuery(0) 
     If listInfo Is Nothing Then 
      Throw New ApplicationException("Missing CustomerData Element") 
     End If 

     Me.FirstName.Text = listInfo.FirstName 
     Me.LastName.Text = listInfo.LastName 
     Me.Email.Text = listInfo.Email 
     Me.Website.Text = listInfo.Website 

    End Sub 

End Class 

回答

2

XML是XML ,HTML是HTML。如果您试图将XML解析为HTML,然后提取<Email>的内容,我建议您使用<![CDATA[]]>进行包装,并将其吐出为HTML格式。

也请提供您用于显示此代码。

2

以下XML完美适用于上述示例。

<?xml version="1.0" encoding="utf-8"?> 
<Customers> 
    <Customer> 
      <FirstName>Joe</FirstName> 
      <LastName>Mama</LastName> 
      <Email><![CDATA[<a href="mailto:[email protected]">[email protected]</a>]]></Email> 
      <Website><![CDATA[<a href="http://www.joemama.com">www.joemama.com</a>]]></Website> 
    </Customer> 
</Customer>