2011-08-25 11 views
1

첫째을 형제 기존 XML 노드에서 변수를 생성, 제가 PowerShell을에서 초보자임을 언급하고 사전에 도움을 모든 사람에게 감사의 말씀을하자PowerShell을 -

나는 PowerShell 스크립트의 기능을 가지고

$fileElement = $xml.CreateElement("FileRef") 
$fileElement.SetAttribute("Id",$refId) 

이 새로운 XML 노드를 만듭니다. 따라서 노드 ID가 FileRef 인 여러 노드 형제를 사용할 수 있습니다. 각각 다른 ID 특성을가집니다. $ fileElement 변수는 나중에 $ fileElement.AppendChild를 사용하여 자신의 자식 노드가 추가 된 스크립트에서 다시 사용됩니다.

나는 이제 동일한 $ refId 변수를 여러 번 통과시키는 스크립트 함수를 호출하는 루프가있는 경우가 있습니다. 내가 가진 문제는 동일한 ID를 가진 FileRef 노드 형제가 출력물에 중복되어 있다는 것입니다.

특정 상황에서 id = $ refId를 사용하여 형제가있는 기존 FileRef 노드에서 $ fileElement 변수를 만듭니다 (스크립트에서 나중에 변수에 AppendChild를 사용할 수 있도록) id = $ refId (중복을 일으키는)라는 새로운 형제 노드를 만드는 대신에. 예 : 나는 기존의 노드 형제를 찾아야 할 때

if(circumstances) 
{ 
    $fileElement = $xml.CreateElement("fileRef") 
    $directoryRefElement.SetAttribute("Id",$refId)  
} 
else # use existing node 
{ 
    $fileElement = "" 
    $currentNode = $xml.get_Item("fileRef") 

    do 
    { 
     $currentId = $currentNode.GetAttribute("Id") 
     if ($currentId -eq $refId) 
     { 
      $fileElement = $currentNode 
     } 
     else 
     { 
      $tempNode = $currentNode 
      $currentNode = $tempNode.get_NextSibling() 
     } 
    } 
    while($fileElement -eq "") 
} 

, 나는 첫 번째 노드를 얻을 :

if(circumstances) 
{ 
    # first call to the function in the loop, so create new node sibling 
    $fileElement = $xml.CreateElement("FileRef") 
    $fileElement.SetAttribute("Id",$refId) 
} 
else 
{ 
    # node sibling already exists, do not create new node, 
    # use existing node sibling with id = $refId 
    create xml node variable $fileElement here 
} 

감사

답변

0

좋아, 나는 다음과 같은 PowerShell을 코드로 내 문제를 해결하기 위해 관리했습니다 내가 찾고있는 유형의 $ refId에 전달 된 ID 속성을 확인하십시오. 일치하지 않으면 2 개의 아이디가 일치 할 때까지 다음 형제를 살펴 봅니다.

이것이 내 목표를 달성하는 가장 우아한 방법은 아니지만, 그럼에도 불구하고 작동합니다 :-)

관련 문제