首页 > 解决方案 > 在 Button_Click 事件中从 XML 文件中获取数据

问题描述

我正在尝试使用以下代码从 XML 文件中获取数据:

private void button1_Click(object sender, EventArgs e)
{
    XDocument doc = XDocument.Load(@"C:\..\WindowsFormsApp10\stores.xml");
    var xpath = "//store[Color='Pink']";
    var result = doc.XPathEvaluate(xpath);
    textBox1.Text = result.ToString();
}

我的 XML 是:

<stores>
    <store rollNumer="170">
        <Name>Jonh</Name>
        <Color>Pink</Color>
        <Sell>Sugar</Sell>
    </store>

    <store rollNumer="120">
        <Name>Tedy</Name>
        <Color>Brown</Color>
        <Sell>Rice</Sell>
    </store>
</stores>            <!-- Added by edit -->

但它给了我这个错误:

System.Xml.XPath.XPathEvaluator+EvaluateIterator>d__1`1[System.Object]

我能做些什么?

标签: c#xml

解决方案


它的打印,System.Xml.XPath.XPathEvaluator+EvaluateIterator>d__11[System.Object]`,因为您正在打印对象。在对象上使用 ToString() 不会打印对象的所有属性;相反,它使用 ToString() 方法打印对象的类型。

当您应该检查颜色的 text() 是否为粉红色时,您正在使用的 XPath 正在寻找“某物”为粉红色的颜色。

这会成功的,

XDocument doc = XDocument.Load(filename);
var xpath = "//store/Color[text() = 'Pink']";
var result = ((IEnumerable)doc.XPathEvaluate(xpath)).Cast<XElement>().FirstOrDefault();
Console.WriteLine(result.Value);

打印以下输出:

Pink

推荐阅读