使用C#从XML读取数据

时间:2018-08-28 12:14:24

标签: c# xml

我必须从此XML文件读取订单文本(“这是示例文本”):

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<order id="">
  <users>
    <user id="123456" nick="nick" done="false" />
  </users>
  <machines>
    <machine id="1234" sd="1234" ref="" done="false" />
  </machines>
  <todos />
  <ordertexts>
    <ordertext>This is an example text </ordertext>
  </ordertexts>
</order>

我的C#代码如下:

XmlDocument xDoc = new XmlDocument();
xDoc.Load(file);
XmlElement node = (XmlElement)xDoc.SelectSingleNode("/order/ordertexts/ordertext");

当我将所选数据写入另一个XML文件时,它看起来像这样:

<order>
  <oldOrderText>System.Xml.XmlElement</oldOrderText>
</order>

我做错了什么? XPath不正确吗?

我是C#新手,所以我真的需要我能得到的所有帮助!

谢谢,盖比

1 个答案:

答案 0 :(得分:2)

您要寻找的是XmlElement.InnerText

使用此节点时:

XmlElement node = (XmlElement)xDoc.SelectSingleNode("/order/ordertexts/ordertext");

您仍然需要使用此:

string neededText = node.InnerText;

获取该节点的值。

假设您正在将结果写入控制台应用程序。如果您尝试编写node变量,请按以下方式操作:

Console.WriteLine(node);

由于node不是字符串,而是XmlElement对象,因此将调用XmlElement的{​​{3}}方法,该方法返回对象名称,因此您的新XML的结果为System.Xml.XmlElement,而不是所需的文本。