[英]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.