C# 如何通过名称从特定元素中查找值?
我有一个XML文件,看起来这只是一个片段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 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");