Вставить HTML-якорь в XML-документ - PullRequest
2 голосов
/ 22 октября 2009

Как бы я встроил html-якорь в элемент xml? Рассмотрим следующий 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>

Когда я отображаю содержимое элемента, я получаю только текст без гиперссылок.

Вот код, который я использую для отображения данных XML на странице веб-форм asp.net:

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 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

Ответы [ 2 ]

2 голосов
/ 22 октября 2009

Следующий XML отлично работает для приведенного выше примера.

<?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>
2 голосов
/ 22 октября 2009

XML - это XML, HTML - это HTML. Если вы пытаетесь проанализировать XML как HTML, извлеките содержимое <Email>, которое я предлагаю обернуть <![CDATA[ и ]]>, и выложите его в HTML.

Также укажите код, который вы используете для отображения этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...