我有一个PowerShell代码,我试图将连接的字符串与两个Read-Hosts
输入分开:
$Response = 'Y'
$URLName = $Null
$SecondURLName = @()
# Enter URL
do {
$URLName = Read-Host "Please enter the URL (Example: www.example.com)"
$Response = Read-Host 'Do you want to add more URLs? (y/n)'
$SecondURLName += $URLName
} until ($Response -eq 'n')
使用下面相同的添加XML标记分隔串联字符串的最佳方法是什么:
# Create a new XML File with member root node
$XMLDocument = New-Object System.XML.XMLDocument
# New Node
$MemberRoot = $XMLDocument.CreateElement("url")
# Append as child to an existing node
$XMLDocument.appendChild($MemberRoot)
# Add URL to member Node
$XMLEntry = $MemberRoot.appendChild($XMLDocument.CreateTextNode("$SecondURLName"))
# Save File
$XMLDocument.Save("urls.xml")
以下是我保存在urls.xml
文件中的脚本的当前结果:
<url>thisisfromread-host1.com thisisfromread-host2.com</url>
我需要在urls.xml文件中保存的内容仅为:
<url>thisisfromread-host1.com</url>
<url>thisisfromread-host2.com</url>
那里有一件我想不到的简单事情。
答案 0 :(得分:1)
$SecondURLName
被定义为数组,因此您需要在循环中处理它。将变量放在一个字符串("$SecondURLName"
)中会将数组元素合并为一个字符串,因此最终会得到一个元素。但是,为了附加多个元素,首先需要添加根元素,因为XML文档不能有多个根元素。
$xml = New-Object System.XML.XMLDocument
$root = $xml.CreateElement('root')
$xml.AppendChild($root) | Out-Null
foreach ($url in $SecondURLName) {
$newNode = $xml.CreateElement('url')
$txt = $xml.CreateTextNode($url)
$newNode.AppendChild($txt) | Out-Null
$root.AppendChild($newNode) | Out-Null
}
$xml.Save('urls.xml')