我正在使用 Powershell 脚本自动替换 xml 文件中的一些麻烦字符,例如 & ' - £
我的脚本适用于这些字符,但我也想删除双引号字符 " 但前提是它在 xml 属性中使用(不幸的是用双引号括起来)所以我显然无法从xml 文件,因为这将阻止属性正常工作。
我的 Powershell 脚本如下:
(Get-Content C:\test\communication.xml) |
Foreach-Object {$_ -replace "&", "+" -replace "£", "GBP" -replace "'", "" -replace "–", " "} |
Set-Content C:\test\communication.xml
我希望能够只删除构成 XML 属性的一部分的双引号,这些属性本身由一对双引号括起来,如下所示。我知道 Powershell 将每一行视为一个单独的对象,所以怀疑这应该很容易,可能通过使用条件?
下面是一个示例 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<Portal>
<communication updates="Text data with no double quotes in the attribute" />
<communication updates="Text data that "includes" double quotes within the double quotes for the attribute" />
</Portal>
在上面的示例中,我只想删除直接围绕单词的双引号,但不包括单词 Text 左侧或单词属性右侧的双引号。用于 XML 属性的单词会定期更改,但左双引号始终位于 = 符号的右侧,右双引号始终位于空格正斜杠组合的左侧/谢谢