我试图通过一个免费的winform应用程序货币化,基本上我希望在一个图片框中每隔5分钟旋转10个图像。我不想将这些硬编码到应用程序中,而是将图像URL存储在我的服务器上的xml文件中。
这是我服务器上的xml
<?xml version="1.0" encoding="utf-8"?>
<Advertisements>
<Ad>
<ImageUrl1>http://example.com/example.jpg</ImageUrl1>
<url1>http://example.com</url1>
</Ad>
<Ad>
<ImageUrl2>http://example.com/example2.jpg</ImageUrl2>
<url2>http://example.com</url2>
</Ad>
</Advertisements>
我坚持如何旋转每个节点并显示图像5分钟
试图找到一个不错的例子,但大多数都是针对ASP.net的
这是我的应用中的代码:
XmlTextReader reader = null;
try {
string xmlURL = "http://example.com/ads.xml";
reader = new XmlTextReader(xmlURL);
reader.MoveToContent();
string elementName = "";
if ((reader.NodeType == XmlNodeType.Element) &&
(reader.Name == "Advertisements")) {
while (reader.Read()) {
if (reader.NodeType == XmlNodeType.Element)
elementName = reader.Name;
else {
if ((reader.NodeType == XmlNodeType.Text) &&
(reader.HasValue)) {
switch (elementName)
{
case "ImageUrl1":
picturebox.ImageLocation=reader.Value);
break;
}
}
}
}
}
}
catch (Exception) {
}
finally {
if (reader != null) reader.Close();
}
答案 0 :(得分:0)
您当前的代码使用较旧的XmlReader
方法手动解析XML。这通常是复杂而棘手的。如果您使用的是.NET 3.5或更高版本,则可以使用LINQ to XML获得更清晰的界面来使用XML。
我将采取的解决问题的方法是:
以下是一些使用LINQ to XML加载XML数据的示例C#代码:
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
namespace StackOverflowQ21588436
{
public class Example
{
private const string XML =
@"<?xml version=""1.0"" encoding=""utf-8""?>
<Advertisements>
<Ad>
<ImageUrl>http://example.com/example.jpg</ImageUrl>
<url>http://example.com</url>
</Ad>
<Ad>
<ImageUrl>http://example.com/example2.jpg</ImageUrl>
<url>http://example.com/2.html</url>
</Ad>
</Advertisements>";
public static IList<Advertisement> GetAdvertisements()
{
var xmlDocument = XDocument.Parse(XML); // or XDocument.Load(url)
var adXmlNodes = xmlDocument.Element("Advertisements").Elements("Ad");
var adList = adXmlNodes.Select(xmlNode => new Advertisement {
ImageUrl = xmlNode.Element("ImageUrl").Value,
Href = xmlNode.Element("url").Value
}).ToList();
return adList;
}
}
public class Advertisement
{
public string ImageUrl { get; set; }
public string Href { get; set; } // named 'Href' to show property names don't have to match XML
}
}