Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在给定的XML文件中找到最大的节点?_.net_Xml - Fatal编程技术网

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

.net 如何在给定的XML文件中找到最大的节点?,.net,xml,.net,Xml,我是XML新手。这是我的XML文件内容: <Root> <COMPANIES> <id>1</id> <CompanyName>apple</CompanyName> <CompanyInCome>450</CompanyInCome> </COMPANIES> <COMPANIES> <id>2</id>

我是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>

1.
苹果
450
2.
太太
458
3.
埃夫加
770
4.
女朋友
150

在这里,我想找到最大的公司收入节点,并显示在我的网页上。如何实现它?

使用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();
这将返回在
中数值最高的
节点

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

XDocument xmltest = XDocument.Load(@"E:\MyXML.xml");
.Parse()
方法用于解析代码中定义的现有XML字符串-它不从磁盘读取数据。

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


收入
?可能应该是
收入
。您是如何读取XML文件的?还有,你到底试过什么?你到底有什么问题?请发布您当前的代码并解释问题。最大值=公司收入的最高值??这就是您要找的吗?您可能应该将
公司
重命名为
公司
。和
ROOT
进入
公司
@user1104363:更新了我的响应-要从磁盘读取XML,需要使用
.Load(filename)
而不是
.Parse()
。。。。有关详细信息,请参阅!我现在收到了错误消息。XDocument xmltest=XDocument.Parse(输入);XmlEception未被用户代码处理是的,我使用System.Xml.Linq放置了;但是没有work@user1104363:使用
XDocument.Load(字符串)
从文件加载数据。
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;