c#从下一个节点提取值

c#从下一个节点提取值,c#,xml,C#,Xml,我有下面的xml部分,正在尝试提取已知键的值。下面的示例是一个片段,来自包含1000个节点的较大xml <?xml version="1.0" encoding="utf-8"?> <DictionarySerializer> <item> <key>key1</key> <value>CONTENT1</value> </item> <

我有下面的xml部分,正在尝试提取已知键的值。下面的示例是一个片段,来自包含1000个节点的较大xml

<?xml version="1.0" encoding="utf-8"?>
<DictionarySerializer>  
    <item>
        <key>key1</key>
        <value>CONTENT1</value>
    </item>
    <item>
        <key>key2</key>
        <value>CONTENT2</value>
    </item>
</DictionarySerializer>
我可以得到字符串
CONTENT1
,但我根本不知道如何得到要表示的值节点的值。 我是阿夫拉德,这非常简单,我只是被困在一个咖啡圈里:-)


您应该使用.Value属性而不是.NextNode

尝试将NextNode强制转换为XElement并从中获取值。

如果您想从所有1000个元素的XML中获取所有键和值。您可以使用:

Dictionary<string, string> elements = new Dictionary<string, string>();

xml.Root.Elements().ToList().ForEach(xmlElement =>
{
    elements.Add(xmlElement.Descendants("key").First().Value,
                 xmlElement.Descendants("value").First().Value);
});
Dictionary elements=newdictionary();
xml.Root.Elements().ToList().ForEach(xmlElement=>
{
elements.Add(xmlement.subjects(“key”).First().Value,
子体(“值”).First().value);
});

因此,元素字典将包含所有1000个节点。

考虑到您可以使用XPath表达式

expression = @"//Item[Key='1']/Value"
XmlNodeList nodeList = xmlDocument.SelectNodes(expression);
这将为您提供键为1的项的值节点。只需找到所需节点的值

我相信使用XDocument您也可以尝试

string output = xDocument.XPathEvaluate(expression);

这是我在stackoverflow的第一次。绝对不是最后一次。谢谢你的回答。@KimIsaksen很好。。很高兴帮助你。。!!
expression = @"//Item[Key='1']/Value"
XmlNodeList nodeList = xmlDocument.SelectNodes(expression);
string output = xDocument.XPathEvaluate(expression);