开发者

Embed an HTML anchor in an XML doc

How would I go about embedding an html anchor inside of an xml element? Consider the following xml:

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

When I display the element contents, I only get text, no hyperlinks.

Here is the code I am using to display the xml data in an asp.net web forms page:

CustomerView HTML

<%@ control language="vb" autoeventwireup="false" codebehind="CustomerView.ascx.vb"
    inherits="Sparta.Web.CustomerView" %>
<di开发者_StackOverflow社区v 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 Codebehind

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


XML is XML, HTML is HTML. If you are trying to parse XML as HTML then extract the contents of <Email>, which I suggest wrapping with <![CDATA[ and ]]> and spit it out in HTML.

Also please provide the code you are using to display this.


The following XML works perfectly for the example above.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜