2012-02-28 7 views
0

확장 노드에 대한 네임 스페이스 선언은 어떻게 작동합니까?Linq를 사용하여 네임 스페이스의 XML 노드 읽기

내가 아래에있는 모든 자식 노드를 반환 할 : 나는 다음과 같은 오류가

Dim NS As XNamespace = "http://www.microsoft.com/GroupPolicy/Settings/Scripts" 
Dim UserPolCount = XDoc.Descendants(NS + "Extension").First() 

: GPO-> 사용자 -> ExtensionData-> 확장하는 것은

<?xml version="1.0" encoding="utf-16"?> 
<GPO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.microsoft.com/GroupPolicy/Settings"> 
    <User> 
    <VersionDirectory>4</VersionDirectory> 
    <VersionSysvol>4</VersionSysvol> 
    <Enabled>true</Enabled> 
    <ExtensionData> 
     <Extension xmlns:q1="http://www.microsoft.com/GroupPolicy/Settings/Scripts" xsi:type="q1:Scripts"> 
     <q1:Script> 
      <q1:Command>Logon.cmd</q1:Command> 
      <q1:Type>Logon</q1:Type> 
      <q1:Order>0</q1:Order> 
      <q1:RunOrder>PSNotConfigured</q1:RunOrder> 
     </q1:Script> 
     </Extension> 
     <Name>Scripts</Name> 
    </ExtensionData> 
    </User> 
    <LinksTo> 
    <SOMName>an interesting data value</SOMName> 
    <SOMPath>some data value</SOMPath> 
    <Enabled>true</Enabled> 
    <NoOverride>false</NoOverride> 
    </LinksTo> 
</GPO> 

이 내 시도이다 : 시퀀스에 요소가 없습니다.

또한 제공된 XML 샘플은 ExtensionData-> Extension 노드를 중첩시킬 수있는 작은 조각이므로 길을 찾고자합니다. 전체 경로 지정

감사합니다.

답변

1

Extension 요소의 루트 네임 스페이스에서 여전히 : Extension에서

http://www.microsoft.com/GroupPolicy/Settings 

요소는 스크립트 네임 스페이스 아래에 있습니다 :

http://www.microsoft.com/GroupPolicy/Settings/Scripts 

그래서 당신이 필요합니다

Dim NS As XNamespace = "http://www.microsoft.com/GroupPolicy/Settings/" 
Dim NS1 As XNamespace = "http://www.microsoft.com/GroupPolicy/Settings/Scipts" 
Dim UserPolCount = XDoc.Descendants(NS + "Extension").First() 
Dim ScriptNode = UserPolCount.Elements(NS1 + "Script") 

편집 코멘트에서 :

Dim extension = 
    XDoc 
    .Root 
    .Element(NS + "User") 
    .Element(NS + "ExtensionData") 
    .Element(NS + "Extension"); 
+0

예를 들어 주셔서 감사합니다. GPO -> 사용자 -> ExtensionData -> 확장 및 마찬가지로 GPO -> 컴퓨터 -> ExtensionData -> 확장 – Ben

+0

답변을 업데이트하십시오. – DaveShaw

1

잘못된 네임 스페이스를 사용하고 있습니다. 네임 스페이스로 http://www.microsoft.com/GroupPolicy/Settings을 사용해야합니다.
Extension의 자식 만 Scripts 네임 스페이스에 있기 때문입니다. 당신은 쉽게 이것을 볼 수 있습니다 : 아이들은 모두 접두사가 q1, 그 자체가 Extension 태그가 아닙니다. 따라서 루트 태그 GPO에있는 속성 xmlns="http://www.microsoft.com/GroupPolicy/Settings"으로 정의 된 기본 네임 스페이스에 정의됩니다.

+0

정보 주셔서 감사합니다. – Ben

관련 문제