我有290個組策略備份XML文件,我需要在單獨的文件夾中枚舉。如何使用Linq動態查詢名稱空間到XML
對於每個組策略備份xml文件,我需要查詢策略設置。
任何查看過組策略xml備份文件的人都會知道它們是充滿命名空間聲明的chock-block。
我想知道,使用Linq to XML,當我查詢每個xml文件時,如何動態查詢XML名稱空間,然後將名稱空間追加到子節點/值的Linq查詢中?
下面是一些xml結構的例子。
<User>
<ExtensionData>
<Extension xmlns:q1="http://www.microsoft.com/GroupPolicy/Settings/Scripts" xsi:type="q1:Scripts">
<q1:Script>
<ExtensionData>
<Extension xmlns:q1="http://www.microsoft.com/GroupPolicy/Settings/IE" xsi:type="q1:InternetExplorerSettings">
<q1:PreferenceMode>true</q1:PreferenceMode>
<ExtensionData>
<Extension xmlns:q2="http://www.microsoft.com/GroupPolicy/Settings/Registry" xsi:type="q2:RegistrySettings">
<q2:Policy>
<q2:Name>Disable changing accessibility settings</q2:Name>
<q2:State>Enabled</q2:State>
<ExtensionData>
<Extension xmlns:q1="http://www.microsoft.com/GroupPolicy/Settings/DriveMaps" xsi:type="q1:DriveMapSettings">
<q1:DriveMapSettings clsid="{8FDDCC1A-0C3C-43cd-A6B4-71A6DF20DA8C}">
我最初的代碼如下所示:
Dim NS As XNamespace = "http://www.microsoft.com/GroupPolicy/Settings"
NodeValue = XDoc.Descendants(NS + NodeName).First().Value
正如你看到的,我要面對幾十個字面上不同的命名空間,在這個階段,我甚至不知道他們都是什麼。
我的最終任務是瀏覽290個目錄,每個目錄包含一個組策略xml備份文件。然後我需要從備份文件中包含的每個設置中讀取策略名稱。
因爲我不知道每個xml flie將包含什麼策略設置,所以我不知道在嘗試讀取xml值時需要使用哪些名稱空間。每個xml文件甚至可能包含多個名稱空間。
如何動態讀取Linq中的命名空間,以便我可以讀取值?
謝謝
哎,可惜是的,我關心的命名空間的XML結構,它們之間顯著不同。 – Ben 2012-03-06 08:36:27