我是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节点并在我的网页上显示。我该怎么做?
答案 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;