我有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