我必须从此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#新手,所以我真的需要我能得到的所有帮助!
谢谢,盖比
答案 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
,而不是所需的文本。