我试着让这个工作,但没有多少成功,我试着用了几个例子,但没有一个完全符合我的要求,简单地说,我知道我必须做什么,我只是不明白怎么做。
我尝试从xml表中获取大于10的数量,然后尝试打印它们存在的数量。
XML文件示例:
<PurchaseCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<purchases>
<Purchase>
<id>1</id>
<fullName>Annet Stevens</fullName>
<emailAddress>annet@stevens.com</emailAddress>
<productname>Sandal wood</productname>
<unitprice>500</unitprice>
<quantity>11</quantity>
</Purchase>
<Purchase>
<id>2</id>
<fullName>Bert Waywood</fullName>
<emailAddress>bert@waywood.com</emailAddress>
<productname>Sandal Leaf</productname>
<unitprice>17</unitprice>
<quantity>25</quantity>
</Purchase>
</purchases>
</PurchaseCollection>
正在使用的ASP.NET后端代码示例。
//Attempt to count quantity greater than 10.
const string FILENAME1 = "GoodXML.xml";
String file1 = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FILENAME);
XmlDocument doc = new XmlDocument();
doc.Load(file1);
XmlNode quantity = doc.SelectSingleNode("/PurchaseCollection/purchases/Purchase/[quantity>10]");
string comments = quantity.InnerText;
//Req (using System.Xml;)
Label1.Text = comments (Total amount of quantity here.);
我正在使用一个带有绑定的网格视图表,这可能会引起问题,但由于它在一个单独的部分中,我不认为这是一个案例。
前端代码示例:
<p><asp:Label ID="Label1" runat="server" Text="" ></asp:Label></p>
目前,我遇到了“表达式必须计算到节点错误”,我理解这是由于它无法找到“数量”的节点。
我相信我已经有80%的路了,我希望有更有经验的人可以提供见解。请不要过度设计解决方案,理想情况下,示例越简单越好
最好使用LINQ to XML API。自2007年以来,它在.NET Framework中可用。
C#
void Main()
{
const string FILENAME = @"e:\temp\GoodXML.xml";
XDocument xdoc = XDocument.Load(FILENAME);
int counter = xdoc.Descendants("quantity")
.Where(x => Convert.ToInt32(x.Value) > 10)
.Count();
Console.WriteLine("Counter: {0}", counter);
}