c# - XML子节点文本框

本文关键字:文本 子节点 XML | 更新日期: 2023-09-27 18:05:27

我在c#中将子节点文本放入富文本框中遇到麻烦。以下是我到目前为止所做的尝试:

下面是XML文件:

<DATA_LIST>
  <Customer>
    <Full_Name>TEST</Full_Name>
    <Total_Price>100</Total_Price>
    <Discounts>20</Discounts>
  </Customer>
</DATA_LIST>

代码
//Loads XML Document
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
XmlDocument xDoc = new XmlDocument();
xDoc.Load(path + "''Origami - User''info.xml");
//My attempt at selecting a child node and making it a string
XmlNode xNode = xDoc.SelectSingleNode("DATA_LIST''Customer");
string TotalPriceString = xNode.SelectSingleNode("Total_Price").InnerText;
txtLogBox.AppendText("test: " + TotalPriceString);

这是我得到的错误:

类型为'System.Xml.XPath.XPathException'的未处理异常发生在System.Xml.dll

附加信息:'DATA_LIST'Customer'的令牌无效。

c# - XML子节点文本框

选择Customer节点的XPath错误,应该是/DATA_LIST/Customer

在XPath中不能使用反斜杠。使用斜杠代替:

XmlNode xNode = doc.SelectSingleNode("DATA_LIST/Customer");
string TotalPriceString = xNode.SelectSingleNode("Total_Price").InnerText;

您可以使用单个XPath获取价格:

 string totalPrice =  
    doc.SelectSingleNode("DATA_LIST/Customer/Total_Price").InnerText;

另一个建议是使用LINQ to XML。你可以得到价格作为数字

var xdoc = XDocument.Load(path_to_xml);
int totalPrice = (int)xdoc.XPathSelectElement("DATA_LIST/Customer/Total_Price");

或不使用XPath:

int totalPrice = (int)xdoc.Root.Element("Customer").Element("Total_Price");