【问题标题】:Loading images from XML in ASP.NET在 ASP.NET 中从 XML 加载图像
【发布时间】:2012-06-20 22:32:12
【问题描述】:

我有这个 XML 文件,比如说 (Sample.xml)

<?xml version="1.0" encoding="utf-8" ?>

<drinks>
  <drink>
    <type>Coke </type>
    <image>some.jpg or (url) </image>
    <price> $5 </price>
  </drink>
  <drink>
    <type>Pepsi</type>
    <image>some.jpg or (url) </image>
    <price> $2 </price>
  </drink>
  </drinks>

我也有一个列表框,它绑定到 XML 文件。

<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True" 
        DataSourceID="XmlDataSource2" DataTextField="drinks/drink/type" Height="198px" Width="181px">
    </asp:ListBox>
    <asp:XmlDataSource ID="XmlDataSource2" runat="server" DataFile="~/XMLFile.xml">
    </asp:XmlDataSource>

我该怎么做?好吧,为了清楚地解释我的问题,我想这样做,产品和图片链接应该从 xml 文件加载(图片应该是来自网络的 url)

【问题讨论】:

  • 您的示例中没有任何内容显示有关图像的任何内容。这些 URL 是否应该在 XML 中?
  • 那么你给我们一个例子,其中包括你试图提取的数据?给我们 XML without URL 是毫无意义的。
  • 您已经向我们提供了示例 XML,但它显然不是一个准确的示例,因为它不包含您所说的实际上会在您的 XML 文件中的数据。
  • 我已经编辑了示例,如果对您有帮助,请告诉我。
  • 并非如此 - “some.jpg 或 (url)” 并不能准确地代表您文件中的内容。请阅读tinyurl.com/so-hints

标签: c# asp.net xml xml-parsing


【解决方案1】:

有很多方法可以做到这一点,但您不能使用ListBox 控件列出/显示typeimage。您应该必须使用 GridView/DataList/Repeater 来绑定 XMLDatasource,您可以在其中显示数据和图像。

假设&lt;image&gt;标签包含图片的相对url。

<?xml version="1.0" encoding="utf-8" ?>
<drinks>
  <drink>
    <type>Coke </type>
    <image>~/Images/image1.png</image>
    <price> $5 </price>
  </drink>
  ....
</drinks>

ASP.NET 标记将是:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="XmlDataSource1">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Label ID="Label1" 
                           runat="server" 
                           Text='<%# XPath("type") %>'></asp:Label>
                <asp:Image ID="Image1"
                           runat="server" Height="43px" 
                           ImageUrl='<%# XPath("image") %>' 
                           Width="35px" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile.xml" 
    XPath="drinks/drink"></asp:XmlDataSource>

您还可以选择Linq-XML 来解析XML 文档并准备匿名或键入的List&lt;T&gt;

XDocument doc = XDocument.Load(MapPath("~/XMLFile.xml"));
 var result = from ele in doc.Descendants("drink")
               select new
                 {
                   Type=ele.Element("type").Value,
                   Image=ele.Element("image").Value
                 };

 GridView1.DataSource = result.ToList();
 GridView1.DataBind();

【讨论】:

    【解决方案2】:
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="XmlDataSource1">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
               <asp:Label ID="Label1" runat="server" Text='<%Eval("name")%>'>
                       </asp:Label>                                          
           <asp:Image ID="Image1" runat="server" Height="43px" ImageUrl='<%# Eval("image" )%>' Width="35px" />       
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多