gpt4 book ai didi

xml - Powershell 在 XML 中添加字符

转载 作者:行者123 更新时间:2023-12-02 22:43:39 24 4
gpt4 key购买 nike

我有一个类似这样的 XML 文件:

<globalConfigs>
<!-- some settings -->
<globalConfig key="currency" value="£" />
</globalConfigs>

我有一些 Powershell 正在按照以下方式操纵它:

function Update-Config ($filePath, $siteName) {
[xml]$config = Get-Content $filePath;
$newNode = $config.CreateElement("globalConfig");

$keyAttribute = $config.CreateAttribute("key");
$keyAttribute.Value = "currencyCode";
$newNode.Attributes.Append($keyAttribute);

$valAttribute = $config.CreateAttribute("value");
$valAttribute.Value = "GBP";
$newNode.Attributes.Append($valAttribute);

$config.globalConfigs.AppendChild($newNode);
Write-Log "Added config node to site.";
$config.Save($filePath);
}

现在这按预期工作,因为它添加了新 key 。但是生成的 xml 在井号之前添加了一个额外的字符:

<globalConfigs>
<!-- some settings -->
<globalConfig key="currency" value="£" />
<globalConfig key="currencyCode" value="GBP" />
</globalConfigs>

是什么导致了这个额外的字符?它似乎是间歇性的,但它添加的次数多于不频繁。

最佳答案

您的 XML 包含未经正确编码的非 ASCII 字符。将字符编码为实体引用 (£),或添加 declaration到您的 XML 数据:

function Update-Config ($filePath, $siteName) {
[xml]$config = Get-Content $filePath;
$newNode = $config.CreateElement("globalConfig");

$keyAttribute = $config.CreateAttribute("key");
$keyAttribute.Value = "currencyCode";
$newNode.Attributes.Append($keyAttribute);

$valAttribute = $config.CreateAttribute("value");
$valAttribute.Value = "GBP";
$newNode.Attributes.Append($valAttribute);

$config.globalConfigs.AppendChild($newNode)
Write-Log "Added config node to site."
<b>$declaration = $config.CreateXmlDeclaration('1.0', 'utf-8', $null)
[void]$config.InsertBefore($declaration, $config.DocumentElement)</b>
$config.Save($filePath)
}

关于xml - Powershell 在 XML 中添加字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31678308/

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