Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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#_Xml_Linq_Linq To Xml - Fatal编程技术网

C# 基于另一个属性读取XML属性值

C# 基于另一个属性读取XML属性值,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我正在尝试根据我传递的错误代码重新查看错误消息。如何使用linq来执行此操作 这是我的xml文档布局 <?xml version="1.0" encoding="utf-8" ?> <errors> <error code="101" message="Our Database is currently experience problems!"> </error> </errors> 好的,您可以加载文档一次,将其转换

我正在尝试根据我传递的错误代码重新查看错误消息。如何使用linq来执行此操作

这是我的xml文档布局

<?xml version="1.0" encoding="utf-8" ?>
<errors>
  <error code="101" message="Our Database is currently experience problems!">   
  </error>
</errors>

好的,您可以加载文档一次,将其转换为
字典
,如下所示:

var doc = XDocument.Load(HttpContext.Current.Server.MapPath("/App_Data/ErrorCodes.xml"));
var errors = doc.Root.Elements("error")
                .ToDictionary(x => (int) x.Attribute("code"),
                              x => (string) x.Attribute("message"));
(您可以在web应用加载时执行此操作。)

或者,如果您真的只需要找到一条消息:

var doc = XDocument.Load(HttpContext.Current.Server.MapPath("/App_Data/ErrorCodes.xml"));
var errors = doc.Root.Elements("error")
                .Where(x => (int) x.Attribute("code") == code)
                .Single()
                .Attribute("message").Value;
注意,
XDocument
是LINQ到XML的一部分
XmlDocument
不是

var doc = XDocument.Load(HttpContext.Current.Server.MapPath("/App_Data/ErrorCodes.xml"));
var errors = doc.Root.Elements("error")
                .Where(x => (int) x.Attribute("code") == code)
                .Single()
                .Attribute("message").Value;