Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# 解析XML元素以获取元素的值_C#_.net_Xml - Fatal编程技术网

C# 解析XML元素以获取元素的值

C# 解析XML元素以获取元素的值,c#,.net,xml,C#,.net,Xml,我有以下XML <?xml version="1.0" encoding="UTF-8"?> <i18nText><Country code="DE" language="de" text="nach Datum" /><Country code="US" language="en" text="by Date" /></i18nText> 我正在尝试获取text元素的值。根据language元素,可以有不同的值。 如何将其填充到

我有以下XML

<?xml version="1.0" encoding="UTF-8"?> <i18nText><Country code="DE" language="de" text="nach Datum" /><Country code="US" language="en" text="by Date" /></i18nText>

我正在尝试获取
text
元素的值。根据
language
元素,可以有不同的值。 如何将其填充到字典中,即:每种语言的文本值。

XmlDocument doc=new XmlDocument();
XmlDocument doc = new XmlDocument();
doc.LoadXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?> <i18nText><Country code=\"DE\" language=\"de\" text=\"nach Datum\" /><Country code=\"US\" language=\"en\" text=\"by Date\" /></i18nText>");
XmlNodeList countries = xDoc.GetElementsByTagName("Country");
Dictionary<string, string> dict = new Dictionary<string, string>();
for (int i = 0; i < countries.Count; i++)
{
     dict.Add(countries[i].Attributes["language"]?.InnerText, countries[i].Attributes["text"]?.InnerText);
}
doc.LoadXml(“”); XmlNodeList countries=xDoc.GetElementsByTagName(“国家”); Dictionary dict=新字典(); for(int i=0;i
XmlDocument doc=新的XmlDocument();
doc.LoadXml(“”);
XmlNodeList countries=xDoc.GetElementsByTagName(“国家”);
Dictionary dict=新字典();
for(int i=0;i
我会使用Linq to Xml,它比使用循环更具声明性,更易于阅读

using System.Linq;
using System.Xml.Linq;

        var xml = @"<?xml version=""1.0"" encoding=""UTF - 8""?> <i18nText><Country code=""DE"" language=""de"" text=""nach Datum"" /><Country code=""DE"" language=""de"" text=""nach Datum"" /><Country code=""US"" language=""en"" text=""by Date"" /></i18nText>";
        var doc = XDocument.Parse(xml);

        var dic = (from country in doc.Root.Elements()
                  select new { language=country.Attribute("language").Value, text=country.Attribute("text").Value }).
                  Distinct().
                  ToDictionary(country => country.language, country => country.text);
使用System.Linq;
使用System.Xml.Linq;
var xml=@;
var doc=XDocument.Parse(xml);
var dic=(来自doc.Root.Elements()中的国家/地区)
选择新{language=country.Attribute(“language”).Value,text=country.Attribute(“text”).Value})。
独特的()。
ToDictionary(country=>country.language,country=>country.text);

我会使用Linq to Xml,它比使用循环更具声明性,更易于阅读

using System.Linq;
using System.Xml.Linq;

        var xml = @"<?xml version=""1.0"" encoding=""UTF - 8""?> <i18nText><Country code=""DE"" language=""de"" text=""nach Datum"" /><Country code=""DE"" language=""de"" text=""nach Datum"" /><Country code=""US"" language=""en"" text=""by Date"" /></i18nText>";
        var doc = XDocument.Parse(xml);

        var dic = (from country in doc.Root.Elements()
                  select new { language=country.Attribute("language").Value, text=country.Attribute("text").Value }).
                  Distinct().
                  ToDictionary(country => country.language, country => country.text);
使用System.Linq;
使用System.Xml.Linq;
var xml=@;
var doc=XDocument.Parse(xml);
var dic=(来自doc.Root.Elements()中的国家/地区)
选择新{language=country.Attribute(“language”).Value,text=country.Attribute(“text”).Value})。
独特的()。
ToDictionary(country=>country.language,country=>country.text);

我会将其反序列化为一个类型,然后很容易使用数据我会将其反序列化为一个类型,然后很容易使用数据谢谢。。我一直收到此异常
异常源:System.Xml异常类型:System.Xml.XmlException异常消息:根级别的数据无效。第1行,位置1。异常目标站点:抛出
OK。。。谢谢有没有办法在创建的字典中添加一个唯一的id?@techno你是什么意思?钥匙的定义是独一无二的。钥匙是什么?@techno因此请修改问题并提供更多细节。无论如何,已经提供了一种声明式的方法来提取属性并利用它们制作字典。您可以根据您的场景进行调整。谢谢。。我一直收到此异常
异常源:System.Xml异常类型:System.Xml.XmlException异常消息:根级别的数据无效。第1行,位置1。异常目标站点:抛出
OK。。。谢谢有没有办法在创建的字典中添加一个唯一的id?@techno你是什么意思?钥匙的定义是独一无二的。钥匙是什么?@techno因此请修改问题并提供更多细节。无论如何,已经提供了一种声明式的方法来提取属性并利用它们制作字典。您可以根据您的场景进行调整。