我无法将子节点文本放入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);
这是我得到的错误:
未处理的类型&#39; System.Xml.XPath.XPathException&#39; 发生在System.Xml.dll
中其他信息:&#39; DATA_LIST \ Customer&#39;有一个无效的令牌。
任何帮助都会很棒。
答案 0 :(得分:1)
用于选择客户节点的XPath是错误的,它应该是/DATA_LIST/Customer
有关详细信息和示例,请参阅XPath Syntax。
答案 1 :(得分:1)
您不能在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");