动态可能不是这里最好用的词,但我会举一个例子说明我的意思:
我有一些XML格式的配置文件,我需要访问这些配置文件的某些元素。现在,在代码中,我正在做类似的事情:
string serverName = elements.Element("Server").Value;
如果Server
仍然是elements
的子元素,那么上述情况一切顺利,但如果它移动,我将不得不修改代码。我想到的一个解决方案是使用在运行时加载的某个文件中定义的XPATH
表达式,如果我要查找的元素或属性发生了变化,我就不必更改代码,我只需要更改XPATH
表达式。这是一种可行的方法还是有其他解决方案?
答案 0 :(得分:1)
您可以使用Descendants在树中查找任何元素“Server”元素。然而,当Xml更改时更改代码可能不是一件坏事 - 至少你知道你在读什么。如果您使用Descendands,您将读取该值,无论该更改是否是有意的,这意味着您读取了碰巧在其中包含“Server”元素的任何Xml文档,这意味着您接受的Xml文件不必遵循任何结构/ definitione(除非你有xsd强制执行它)