c# - 在 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]
我能做些什么?
解决方案
它的打印,System.Xml.XPath.XPathEvaluator+EvaluateIterator>d__1
1[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
推荐阅读
- sas - SAS:结合查询的简单使用宏
- python - 推特用户名的正则表达式,但某些匹配指定格式 - Python
- reactjs - useEffect 中的执行顺序:从 API 获取数据,然后更新父组件
- paypal - 被拒绝的 Payflow Silent Post 不会使 PayPal 处理器中的交易无效
- javascript - 如何获得 If/If else 语句的结果
- python - Python遍历文件,搜索特定字符串,如果找到,则复制其余行并合并到组合文件中
- c++ - 我应该在源文件中包含包含命名空间定义的标题吗?
- elasticsearch - Geoportal 目录服务器 - 从 XML 中提取
- python - 有效地删除具有特定值的集合中的元组
- java - 使用 BitcoinJ 将比特币支付添加到 java 应用程序