是否可以使LINQ To XML动态化?

时间:2012-10-02 01:56:59

标签: c# xpath .net-4.0 linq-to-xml

动态可能不是这里最好用的词,但我会举一个例子说明我的意思:

我有一些XML格式的配置文件,我需要访问这些配置文件的某些元素。现在,在代码中,我正在做类似的事情:

string serverName = elements.Element("Server").Value;

如果Server仍然是elements的子元素,那么上述情况一切顺利,但如果它移动,我将不得不修改代码。我想到的一个解决方案是使用在运行时加载的某个文件中定义的XPATH表达式,如果我要查找的元素或属性发生了变化,我就不必更改代码,我只需要更改XPATH表达式。这是一种可行的方法还是有其他解决方案?

1 个答案:

答案 0 :(得分:1)

您可以使用Descendants在树中查找任何元素“Server”元素。然而,当Xml更改时更改代码可能不是一件坏事 - 至少你知道你在读什么。如果您使用Descendands,您将读取该值,无论该更改是否是有意的,这意味着您读取了碰巧在其中包含“Server”元素的任何Xml文档,这意味着您接受的Xml文件不必遵循任何结构/ definitione(除非你有xsd强制执行它)