2016-06-29 6 views
0

<Description> 태그를 <Object>의 하위 요소 인 다음 xmla 파일 (xmla = Microsoft Analysis Services)에 해당 값으로 추가하는 방법은 무엇입니까?XML의 특정 위치에 노드 추가

이렇게하면 <Object>이 아닌 파일 끝에 간단히 추가됩니다.

<Batch Transaction="false" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"> 
    <Alter AllowCreate="true" ObjectExpansion="ExpandFull"> 
    <Object> 
     <DatabaseID>CRH_TA1</DatabaseID> 
    </Object> 
    <ObjectDefinition> 
     <Database xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400"> 
     <ID>CRH_TA1</ID> 
     <Name>CRH_TA1</Name> 
     <DataSourceImpersonationInfo> 
      <ImpersonationMode>ImpersonateAccount</ImpersonationMode> 

답변

1
$xml.FirstChild.AppendChild($xmlElt); 

당신의 코드는 XML 문서의 첫 번째 자식 노드에 새로 만든 요소를 ​​추가합니다 :

$ns = New-Object System.Xml.XmlNamespaceManager($xml.NameTable) 
$ns.AddNamespace("d", $xml.DocumentElement.NamespaceURI) 
$xml.SelectSingleNode("//d:Database/d:Description", $ns) 

$xmlElt = $xml.CreateElement("Description") 
$xmlText = $xml.CreateTextNode("Mach1") 
$xmlElt.AppendChild($xmlText) 

$xml.FirstChild.AppendChild($xmlElt); 

$xml.SelectSingleNode("//d:Database/d:Description", $ns) 

$xml.Save("test.xml") 

는 XMLA (상단 부분)입니다. 귀하의 경우에는 문서 루트 요소 인 것 같습니다. XML 파일에 분명히 선언 ( <?xml ...?>)이 포함되어 있지 않기 때문에 작동합니다. 그렇지 않으면 오류가 발생합니다.

실제로 새 요소를 추가 할 노드를 선택한 다음 해당 노드에서 AppendChild()을 호출해야합니다.

$parent = $xml.SelectSingleNode('//d:Batch/d:Alter/d:Object', $ns) 
$parent.AppendChild($xmlElt)