比较XML和字符串的最佳方法
本文关键字:最佳 方法 字符串 XML 比较 | 更新日期: 2023-09-27 18:16:24
我正在寻找比较XML数据与字符串的最佳方法。数据存储在名为test.xml的XML中,必须与名称后代进行比较,如果存在匹配,则必须将来自XML的更多信息添加到文本框和图片框中。
My (working) code:
var xmlDocument = XDocument.Load("test.xml"); // XML koppellen
var key1 = xmlDocument.Descendants("NAME"); // XML filepath
var key2 = xmlDocument.Descendants("TITLE"); // XML titel
var key3 = xmlDocument.Descendants("BRAND"); // XML afbeelding
var key4 = xmlDocument.Descendants("TYPE"); // XML merk
var key5 = xmlDocument.Descendants("SOORT"); // XML type
var key6 = xmlDocument.Descendants("NAAM"); // XML naam
List<string> file = new List<string>();
List<string> title = new List<string>();
List<string> brand = new List<string>();
List<string> type = new List<string>();
List<string> soort = new List<string>();
List<string> naam = new List<string>();
int i = 0;
foreach (var key in key1)
{
file.Add(key.Value.Trim());
}
foreach (var key in key2)
{
title.Add(key.Value.Trim());
}
foreach (var key in key3)
{
brand.Add(key.Value.Trim());
}
foreach (var key in key4)
{
type.Add(key.Value.Trim());
}
foreach (var key in key5)
{
soort.Add(key.Value.Trim());
}
foreach (var key in key6)
{
naam.Add(key.Value.Trim());
}
foreach (var Name in naam)
{
if (textBox3.Text.ToString() == Name.ToString())
{
PDFLocation = file[i].ToString();
pictureBox1.Image = pdfhandler.GetPDFthumbNail(PDFLocation);
textBox4.Text =
title[i].ToString() + "'r'n" +
brand[i].ToString() + "'r'n" +
type[i].ToString() + "'r'n" +
soort[i].ToString() + "'r'n" +
textBox3.Text + "'r'n";
}
i++;
}
)
我认为这不是最好的方法,但看不到更好的方法....
更新:解决方案:
foreach (XElement element in xmlDocument.Descendants("PDFDATA"))
{
if (textBox3.Text.ToString() == element.Element("NAAM").Value.Trim())
{
PDFLocation = element.Element("NAME").Value.ToString();
pictureBox1.Image = pdfhandler.GetPDFthumbNail(PDFLocation);
textBox4.Text =
element.Element("TITLE").Value + "'r'n" +
element.Element("BRAND").Value + "'r'n";
break;
}
}
与其考虑xml和一堆单独的数据列表,不如将其更多地视为对象。然后,您可以一次一个地循环遍历每个元素,而不需要将其拆分为单独的列表。这不仅消除了重复的代码,更重要的是创建了您正在处理的数据的更好的抽象。这使得它更容易阅读和理解代码在做什么。
foreach (XElement element in xmlDocument.Elements())
{
if (textBox3.Text.ToString() == element.Element("NAAM").Value)
{
PDFLocation = element.Element("NAAM").Value;
pictureBox1.Image = pdfhandler.GetPDFthumbNail(PDFLocation);
textBox4.Text =
element.Element("Title").Value + "'r'n" +
element.Element("Brand").Value + "'r'n" +
element.Element("Type").Value + "'r'n"
// access rest of properties...
}
}