2014-02-18 29 views
-2

我有下面的腳本,它將創建帶有數據的xml。如何在xml中使用powershell添加數據

============================================== ========================

$xmlPath = "D:\Users\admin\Desktop\Report.xml" 
$date = Get-Date -UFormat %m/%d/%Y 

if (! (Test-Path $xmlPath)) 
{ 
    # Create The XML 
    $global:xmlWriter = New-Object System.XMl.XmlTextWriter($xmlPath,$Null) 
    $global:xmlWriter.Formatting = "Indented" 
    $global:xmlWriter.Indentation = "4" 
    $global:xmlWriter.WriteStartDocument() 
    $global:xmlWriter.WriteStartElement("Execution") 
    $global:xmlWriter.WriteStartElement("ExecutedOn") 
    $global:xmlWriter.WriteAttributeString("Date",$date) 
    $global:xmlWriter.WriteStartElement("Environments") 
    Foreach($c in $cEnvironments) 
    { 
     $global:xmlWriter.WriteStartElement($c.Environment) 
     $global:xmlWriter.WriteAttributeString("Red",$c.Red) 
     $global:xmlWriter.WriteAttributeString("Green",$c.Green) 
     $global:xmlWriter.WriteAttributeString("Blue",$c.Blue) 
     $global:xmlWriter.WriteEndElement() #end of $c.Environment 
    } 
    $global:xmlWriter.WriteEndElement() #end Environments 

    $global:xmlWriter.WriteStartElement("ClEnv") 
    Foreach($c1 in $clEnv) 
    { 
     $global:xmlWriter.WriteStartElement($c1.Environment) 
     $global:xmlWriter.WriteAttributeString("John",$c1.John) 
     $global:xmlWriter.WriteAttributeString("Mike",$c1.Mike) 
     $global:xmlWriter.WriteAttributeString("Alex",$c1.Alex) 
     $global:xmlWriter.WriteEndElement() #end of $c1.Environment 
    } 
    $global:xmlWriter.WriteEndElement() #end ExecutedOn 
    $global:xmlWriter.WriteEndElement() #end execution 
    $global:xmlWriter.WriteEndDocument() #end document 
    $global:xmlWriter.Finalize 
    $global:xmlWriter.Flush() 
    $global:xmlWriter.Close() 
} 
else 
{ 
    here I need to append the data in existing xml with the same above info but with different value 
} 

=================== ================================================== = $ cEnvironments $ clEnv變量是數組並具有相關數據。現在我需要在第二天重新運行腳本並檢查文件是否已經存在。這是我正在做的如果命令。如果已經存在,則使用「其他」我要在現有的XML數據與上述相同的信息,但根據第「執行」不同的值附加像下面

給出========== ================================================== ==========

<?xml version="1.0"?> 
<?xml-stylesheet type='text/xsl' href='style.xsl'?> 
<Execution> 
    <ExecutionStarted Date="2/19/2014"> 
    <Environments1> 
     <Colors Red="21" Blue="14" Green="18" /> 
    </Environments1> 
    <Environments2> 
     <Names John="21" Mike="14" Alex="18" /> 
    </Environments2> 
</ExecutionStarted> 
***<ExecutionStarted Date="2/20/2014"> 
    <Environments1> 
     <Colors Red="2" Blue="56" Green="76" /> 
     <Colors Cyan="31" Brown="32" Black="54" /> 
    </Environments1> 
    <Environments2> 
     <Names John="45" Mike="63" Alex="97" /> 
    </Environments2> 
</ExecutionStarted>*** 
</Execution> 

謝謝。

+0

可能有人請幫助我在附加XML在上面的代碼 – Farhan

回答

1

這是一個解決方案。不得不做出一些改動,因爲沒有定義$日期,但看看這做什麼,你需要它:

# Set the File Name 
$filePath = "e:\Report2.xml" 

# Create The Document 
$XmlWriter = New-Object System.XMl.XmlTextWriter($filePath,$Null) 

# Set The Formatting 
$xmlWriter.Formatting = "Indented" 
$xmlWriter.Indentation = "4" 

# Write the XML Decleration 
$xmlWriter.WriteStartDocument() 

# Set the XSL 
$XSLPropText = "type='text/xsl' href='style.xsl'" 
$xmlWriter.WriteProcessingInstruction("xml-stylesheet", $XSLPropText) 

# Write Root Element 
$xmlWriter.WriteStartElement("Execution") 

# -- Begin New Code #1 -- 

# $date doesn't seem to be defined, setting it so it looks like your results... 
$date=1 

# -- End New Code #1 -- 

# Write the Document 
$xmlWriter.WriteStartElement("ExecutionStarted") 
$xmlWriter.WriteAttributeString("Date",$date) 
$xmlWriter.WriteStartElement("Environments1") 
$xmlWriter.WriteStartElement("Colors") 
$xmlWriter.WriteAttributeString("Red","21") 
$xmlWriter.WriteAttributeString("Yellow","14") 
$xmlWriter.WriteAttributeString("Green","18") 
$xmlWriter.WriteEndElement()# Closing Colors 
$xmlWriter.WriteEndElement() # Closing environments1 


$xmlWriter.WriteStartElement("Environments2") 
$xmlWriter.WriteStartElement("Names") 
$xmlWriter.WriteAttributeString("John","21") 
$xmlWriter.WriteAttributeString("Mike","14") 
$xmlWriter.WriteAttributeString("Alex","18") 
$xmlWriter.WriteEndElement()# Closing Name 
$xmlWriter.WriteEndElement() # Closing environments2 


$xmlWriter.WriteEndElement() # Closing executionstarted 

# -- Begin New Code #2 -- 

$date++ 

$xmlWriter.WriteStartElement("ExecutionStarted") 
$xmlWriter.WriteAttributeString("Date",$date) 
$xmlWriter.WriteStartElement("Environments3") 
$xmlWriter.WriteStartElement("Colors") 
$xmlWriter.WriteAttributeString("blue","21") 
$xmlWriter.WriteAttributeString("black","14") 
$xmlWriter.WriteAttributeString("cyan","18") 
$xmlWriter.WriteEndElement()# Closing Names 
$xmlWriter.WriteEndElement() # Closing environments3 

$xmlWriter.WriteEndElement() # Closing executionstarted 

# -- End New Code #2 -- 

# Write Close Tag for Root Element 
$xmlWriter.WriteEndElement() # Closing RootElement 

# End the XML Document 
$xmlWriter.WriteEndDocument() 

# Finish The Document 
$xmlWriter.Finalize 
$xmlWriter.Flush() 
$xmlWriter.Close() 
+0

我很抱歉。我可能無法正確解釋。下面我再解釋希望這是可以理解的。 – Farhan

+0

請在上面的問題部分找到我已經解釋的更改。讓我知道這是不是可以理解的 – Farhan

相關問題