【发布时间】:2017-10-25 10:28:17
【问题描述】:
我有一个输入 XML 文件,其中包含各种字符的普通 HTML 名称,例如双引号 = " 等
<Notes>Double Quote " Single Quote &pos; Ampersand &</Notes>
之前
<?xml version="1.0" encoding="UTF-8"?>
<OrganisationUnits>
<OrganisationUnitsRow num="8">
<OrganisationId>ACME24/7HOME</OrganisationId>
<OrganisationName>ACME LTD</OrganisationName>
<Notes>Double Quote " Single Quote &pos; Ampersand & </Notes>
<Sector>P</Sector>
<SectorDesc>Private Private & Voluntary</SectorDesc>
</OrganisationUnitsRow>
</OrganisationUnits>
之后
<?xml version="1.0" encoding="UTF-8"?>
<OrganisationUnits>
<OrganisationUnitsRow num="8">
<OrganisationId>ACME24/7HOME</OrganisationId>
<OrganisationName>ACME LTD</OrganisationName>
<Notes>Double Quote " Single Quote ' Ampersand &</Notes>
<Sector>P</Sector>
<SectorDesc>Private Private & Voluntary</SectorDesc>
</OrganisationUnitsRow>
</OrganisationUnits>
我将文件当作 XML 处理,它可以正常处理,没什么特别的。
$xml = [xml](Get-Content $path\$File)
foreach ($CMCAddressesRow in $xml.OrganisationUnits.OrganisationUnitsRow) {
blah
blah
}
$xml.Save("$path\$File")
保存输出后,所有 HTML 代码(如 &quot;)将替换为 "。
如何保留原始 HTML &quot; 字符?更重要的是为什么会这样。
【问题讨论】:
-
XML文件的第6行应该有
&apos吗? -
System.Net.WebUtility.HtmlDecode 和 System.Net.WebUtility.HtmlEncode
-
看来更换了"当文件被读取为 [xml] 时, &apos 已经发生。
-
这是
&apos;,而不是&pos;,并且&amp;保留在输出中。发布示例时,请确保它们是正确的。创建一个minimal reproducible example 并复制/粘贴它。不要凭记忆打字。不要胡编乱造。
标签: html xml powershell replace character