gpt4 book ai didi

xml - 从哈希表输入生成xml输出

转载 作者:行者123 更新时间:2023-12-03 01:25:34 24 4
gpt4 key购买 nike

我想执行字符串形成并将结果转换为XML变量。这是我必须转换为有效xml的示例输入,

$ps_hash_table =@{
"Category01" = @(
'C1I1',
'C1I2',
'C1I3'
);
"Category02" = @(
'C2I1',
'C2I2',
'C2I3'
);
}
我需要这种格式的xml输出,
<Categories>
<list>C1I1</list>
<list>C1I2</list>
<list>C1I3</list>
<list>C2I1</list>
<list>C2I2</list>
<list>C2I3</list>
</Categories>
我能够通过常规循环将其格式化为xml字符串,但正在寻找一种最佳或更好的方式来生成此字符串。

最佳答案

就个人而言,我将为此使用[Xml.XmlWriter]对象。

$xmlsettings = [xml.xmlwritersettings]::new()
$xmlsettings.indent = $true
$xmlsettings.omitxmldeclaration = $true
$xml = [xml.xmlwriter]::create('xml.xml',$xmlsettings)
$xml.writestartelement('Categories')
$ps_hash_table.values | Foreach-Object {
$_ | Foreach-Object {
$xml.writeelementstring('list',$_)
}
}
$xml.writeendelement()
$xml.flush()
$xml.close()
现在 xml.xml将包含您的xml格式的字符串

要将XML字符串存储在变量中而不使用文件,可以使用 MemoryStream对象:
$xmlsettings = [xml.xmlwritersettings]::new()
$xmlsettings.indent = $true
$xmlsettings.omitxmldeclaration = $true
$xmlsettings.encoding = [text.encoding]::UTF8::new($false)
$stream = [io.memorystream]::new()
$xml = [xml.xmlwriter]::create($stream,$xmlsettings)
$xml.writestartelement('Categories')
$ps_hash_table.values | Foreach-Object {
$_ | Foreach-Object {
$xml.writeelementstring('list',$_)
}
}
$xml.writeendelement()
$xml.flush()
$xml.close()
$output = [text.encoding]::UTF8.GetString($stream.ToArray())
$stream.Dispose()
$stream.Close()
现在 $output包含您的字符串。使用 UTF8$false编码可防止在使用Windows PowerShell时添加BOM。在PowerShell Core中没有必要。存在BOM时,字节流到字符串的转换具有不可读的字符。

关于xml - 从哈希表输入生成xml输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63479487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com