2012-10-02 61 views
1

這裏動態可能不是這個詞的最佳用法,但我會舉例說明我的意思:是否有可能使LINQ To XML動態化?

我有一些XML格式的配置文件,我需要訪問這些配置文件的某些元素。現在,在代碼中,我做的是這樣的:

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

以上是一切都很好,如果Server仍然作爲elements一個子元素,但如果它的動作,我將不得不修改代碼。我想到的一個解決方案是使用在某些文件中定義的XPATH表達式,我將在運行時加載該文件,如果我正在查找的元素或屬性發生更改,我不必更改代碼,我只需更改XPATH表達式。這是一種可行的方法,還是有另一種解決方案?

回答

1

您可以使用Descendants在樹中查找任何元素「Server」元素。但是,當Xml改變時改變代碼可能不是一件壞事 - 至少你知道你在讀什麼。如果你使用Descendands,你會閱讀這個值,而不管這個改變是否是有意或無意的,這意味着你讀了任何碰巧裏面有「Server」元素的Xml文檔,這意味着你接受的Xml文件不必遵守任何結構/ definitione(除非你有xsd來執行它)