如何在给定的XML文件中找到最大的节点?

时间:2011-12-18 10:21:18

标签: .net xml

我是XML新手。这是我的XML文件内容:

<Root>
  <COMPANIES>
    <id>1</id>
    <CompanyName>apple</CompanyName>
    <CompanyInCome>450</CompanyInCome>
  </COMPANIES>
  <COMPANIES>
    <id>2</id>
    <CompanyName>MS</CompanyName>
    <CompanyInCome>458</CompanyInCome>
  </COMPANIES>
  <COMPANIES>
    <id>3</id>
    <CompanyName>Evga</CompanyName>
    <CompanyInCome>770</CompanyInCome>
  </COMPANIES>
  <COMPANIES>
    <id>4</id>
    <CompanyName>GF</CompanyName>
    <CompanyInCome>150</CompanyInCome>
  </COMPANIES>
</Root>

这里我想找到最大的CompanyInCome节点并在我的网页上显示。我该怎么做?

2 个答案:

答案 0 :(得分:3)

使用Linq-to-XML,您可以编写如下内容:

string input = "....(your XML here).....";

XDocument xmltest = XDocument.Parse(input);

var result = xmltest
                .Descendants("COMPANIES")
                .OrderByDescending(x => Convert.ToInt32(x.Element("CompanyInCome").Value))
                .FirstOrDefault();

这将返回<COMPANIES>中具有最高数值的<CompanyInCome>节点。

更新:如果您想从外部文件中读取XML,请使用以下代码行:

XDocument xmltest = XDocument.Load(@"E:\MyXML.xml");

.Parse()方法用于解析代码中定义的现有XML字符串 - 它从磁盘读取 NOT

答案 1 :(得分:0)

使用XPath(例如,在.NET 2.0中工作):

XmlDocument doc = new XmlDocument();
doc.Load(path);

XPathNavigator nav = doc.CreateNavigator();
XPathExpression sort = nav.Compile("Root/COMPANIES");
sort.AddSort("id", XmlSortOrder.Descending, XmlCaseOrder.None, "", XmlDataType.Number);

string max = nav.SelectSingleNode(sort).SelectSingleNode("id").Value;