繁体   English   中英

单击按钮时如何使用不同的元素值显示/过滤元素的值

[英]How can i display/filter values of elements, using a different value of an element when a button is clicked

我有这个xml,当单击按钮时,它将显示属于元素值的图像。 在我的示例中:每个值等于“ Sedan”的carrosserie都显示第一个元素“ FotoGroot”的值。 但我无法摆脱。 这是我的xml:

<root>
<advertentie>
    <uId>3332</uId>
    <auto>
        <merk>GX-TM</merk>
        <carrosserie>Sedan</carrosserie>
    </auto>
    <afbeeldingen>
        <laatsUpdate>10.00</laatsUpdate>
        <FotoGroot>http://etc.usf.edu/clipart/63300/63366/63366_head_lg.gif</FotoGroot>
        <FotoGroot>https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRsXe7qqTisxV9_XpRGtY64fWMllpSAZwSIDzqRMLp4EVgJwStO</FotoGroot>
    </afbeeldingen>
</advertentie>
<advertentie>
    <uId>3333</uId>
    <auto>
        <merk>MB-Maybach</merk>
        <carroserie>Sedan</carroserie>
    </auto>
    <afbeeldingen>
        <laatsUpdate>11.00</laatsUpdate>
        <FotoGroot>http://static.robbreport.com/sites/default/files/mercdes-s600-maybach.jpg</FotoGroot>
        <FotoGroot>https://images.cdn.autocar.co.uk/sites/autocar.co.uk/files/styles/gallery_slide/public/merc-s-class-road-test-017.jpg?itok=pF_TCkMU</FotoGroot>
    </afbeeldingen>
</advertentie>
<advertentie>
    <uId>3334</uId>
    <auto>
        <merk>Royal-Gold</merk>
        <carroserie>Stationwagen</carroserie>
    </auto>
    <afbeeldingen>
        <laatsUpdate>12.00</laatsUpdate>
        <FotoGroot>http://iluvesports.com/wp-content/uploads/2016/07/royal-car-collection-1-600x369.jpg</FotoGroot>
        <FotoGroot>https://i.ytimg.com/vi/RDe3ZvTv5AQ/maxresdefault.jpg</FotoGroot>
    </afbeeldingen>
</advertentie>
</root>

这是我的C#:

protected void btnSedan_Click(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            XDocument xdoc = XDocument.Load(@"C:\\Users\\Gabriel\\documents\\visual studio 2013\\Projects\\ADadvertisement\\ADadvertisement\\Xml\\advertenties.xml");
            //var carHatchback = xdoc.Element("root").Elements("advertentie").Elements("auto").Where(E => E.Element("carrosserie").Value == "Sedan");
           // var carHatchback = xdoc.Element("root").Elements("advertentie").Where(E => E.Elements("auto").Elements("carrosserie").FirstOrDefault().Value == "Sedan");
            var carHatchback = xdoc.Element("root").Elements("advertentie").Where(E => E.Elements("auto").Elements("carrosserie").First().Value == "Sedan");
            StringBuilder sb = new StringBuilder();
            sb.Append("<div class='col-xs-12'>");
            sb.Append("<div class='panel panel-default'>");
            sb.Append("<div class='panel-heading'>Sedan</div>");
            sb.Append("<div class='panel-body'>");

            //var foto1 = xdoc.Element("root").Elements("advertentie").Elements("afbeeldingen").Where(eFoto => eFoto.Element("FotoGroot").Value.Equals(carHatchback)).SingleOrDefault();
            foreach (var autoSoort in carHatchback)
            {
               // sb.Append("<div class='col-xs-12 col-sm-6 col-md-4'><p class='text-success'>" + autoSoort.Element("merk").Value + " " + autoSoort.Element("model").Value + "</p><img src='' class='img-responsive' /></div>");
                sb.Append("<div class='col-xs-12 col-sm-6 col-md-4'><p class='text-success'>" + autoSoort.Element("auto").Element("merk").Value + "</p><img src='" + autoSoort.Element("afbeeldingen").Elements("FotoGroot").Skip(1).First().Value + "' class='img-responsive' /></div>");
            }
            sb.Append("</div>");
            sb.Append("</div>");
            sb.Append("</div>");
            _SearchCarSoort.InnerHtml = sb.ToString();
        }
    }

试试下面的xml linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Linq;


namespace ConsoleApplication55
{
    class Program
    {
        const string FILENAME = @"c:\temp\test2.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            var results = doc.Descendants("advertentie").Select(x => new
            {
                uid = (int)x.Element("uId"),
                merk = (string)x.Descendants("merk").FirstOrDefault(),
                carrosserie = (string)x.Descendants("carrosserie").FirstOrDefault(),
                laatsUpdate = (double)x.Descendants("laatsUpdate").FirstOrDefault(),
                FotoGroot = x.Descendants("FotoGroot").Select(y => (string)y).ToList()
            }).ToList();

            string strings = "<div>"+
                string.Join("</div><div>",results.Select(x => "<p>" + string.Join("</p><p>", new string[] {x.uid.ToString(), x.merk, x.carrosserie, x.laatsUpdate.ToString(), x.FotoGroot.ToString()}) + "</p>")) +
                "</div>";
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM