【问题标题】:CreateTextNode from multiple value in Read-host从读取主机中的多个值创建TextNode
【发布时间】:2016-03-25 10:40:02
【问题描述】:

对于 Powershell - 有没有一种方法可以轻松地从 Read-host 中获取值并将它们与创建的 XML 标记在新行中分开?例如,这是我正在处理的脚本:

$Response = 'Y'
$URLName = $Null
$SecondURLName = @()

# Enter URL

do {
    [array]$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')

# 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")

在 Read-Host 输入下,如果我要输入“website.com”和“website2.com”等 2 个值,则会生成如下 xml 文档:

<url>website.com website2.com</url>

我的目标是在 xml 文档中得到以下结果:

<url>website.com</url>
<url>website2.com</url>

必须有一种更简单的方法将值从读取主机中分离出来,并在 xml 文档中分别格式化它们。有什么提示吗?

【问题讨论】:

    标签: xml api powershell url xmldocument


    【解决方案1】:

    我认为由于您的 $SecondURLName 变量,您必须将脚本的后半部分包装在 foreach 循环中

    $SecondURLName = @('website.com', 'website2.com')
    
    $SecondURLName
    
    "$SecondURLName"
    
    foreach ($line in $SecondURLName ) { $line }
    
    foreach ($line in $SecondURLName ) { "$line" }
    

    【讨论】:

    • 我怀疑使用 foreach 循环,但它并没有正常工作。仍然得到相同的结果: website.com website2.com
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2012-02-15
    • 2015-08-24
    • 2023-02-01
    • 2013-09-07
    • 2021-05-30
    相关资源
    最近更新 更多