提问者:小点点

将数量从XML工作表打印到ASP.NET


我试着让这个工作,但没有多少成功,我试着用了几个例子,但没有一个完全符合我的要求,简单地说,我知道我必须做什么,我只是不明白怎么做。

我尝试从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%的路了,我希望有更有经验的人可以提供见解。请不要过度设计解决方案,理想情况下,示例越简单越好


共1个答案

匿名用户

最好使用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);
}