Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
C# 如何通过名称从特定元素中查找值?_C#_Xml_Linq - Fatal编程技术网

C# 如何通过名称从特定元素中查找值?

C# 如何通过名称从特定元素中查找值?,c#,xml,linq,C#,Xml,Linq,我有一个XML文件,看起来这只是一个片段 <?xml version="1.0" encoding="UTF-8" ?> <Message> <Header> <Message_Type>RFP</Message_Type> <Message_Date>2020-11-05T09:36:03+01:00</Message_Date>

我有一个XML文件,看起来这只是一个片段

 <?xml version="1.0" encoding="UTF-8" ?> 
 <Message>
   <Header>
      <Message_Type>RFP</Message_Type> 
      <Message_Date>2020-11-05T09:36:03+01:00</Message_Date> 
      <Sequence_Number>225</Sequence_Number> 
   etc...
这用整个标题填充元素,对我来说似乎没用。我只需要“Header”中一个元素的值,而不是所有元素的值


那么,这里有没有善良的灵魂能为我指明正确的方向呢?

您当前的查询使用的是Where调用,它只会过滤,不会改变您正在查看的元素

您需要的只是元素方法本身:

var messageTypeElements=headerElements.elements消息类型; 这将为您提供所有Header元素中的所有元素

如果实际上只有一个和一个元素,则可以使用元素:

var message=XElement.LoadfileName; var header=message.ElementHeader; var messageType=header.element消息类型;
Element方法将返回具有给定名称的第一个元素,如果没有,则返回null。我们不知道如果没有标题/消息类型,您的程序是否应该抛出一个异常,或者更优雅地处理它。

您当前的查询使用的是Where调用,它只会过滤-它不会更改您正在查看的元素

您需要的只是元素方法本身:

var messageTypeElements=headerElements.elements消息类型; 这将为您提供所有Header元素中的所有元素

如果实际上只有一个和一个元素,则可以使用元素:

var message=XElement.LoadfileName; var header=message.ElementHeader; var messageType=header.element消息类型; Element方法将返回具有给定名称的第一个元素,如果没有,则返回null。我们不知道如果没有头/消息类型,您的程序是否应该抛出异常,或者更优雅地处理它

var headerElements = XElement.Load(fileName).Elements("Header");
var element = headerElements.Where(x => x.Element("Message_Type").Name == "Message_Type");