在下面的片段
<M>
<remove name="Session" />
</M>
$filePath = "a.xml"
$s = [xml](Get-Content $filePath)
$s.Save($filePath)
如何保留“原样”?这就是脚本之后文件的样子
<M>
<remove name="Session" />
</M>
我不能修改XML格式,因为它是不同系统的一部分。
在下面的片段
<M>
<remove name="Session" />
</M>
$filePath = "a.xml"
$s = [xml](Get-Content $filePath)
$s.Save($filePath)
如何保留“原样”?这就是脚本之后文件的样子
<M>
<remove name="Session" />
</M>
我不能修改XML格式,因为它是不同系统的一部分。
2条答案
按热度按时间f0brbegy1#
[xml]
(System.Xml.XmlDocument
).NET类的行为。"
字符转义为"
。"
as-is与"
-是 * 等价的 *,并且可以在XML文本中互换使用**。[xml]
类提供了对保留原始(文本)文档的文本格式的 * 一些 * 控制-特别是保留 * 无关紧要的 * 空白-但您对保留输入文本中的字符实体引用没有 * 控制:.Save()
方法将内存中的文档表示保存回文件或通过.OuterXml
属性将其转换为XML字符串时,类只是根据需要转义了那些需要它的字符。*简化示例:
"
变成了文字"
,&
变成了文字&
(如果您将上面的.OuterXml
替换为.foo
,以输出<foo>
元素的 string content,这将产生逐字的3" of snow & more
,您可以看到这一点)。.OuterXml
)中,文字"
保持原样-因为它不需要转义-而文字&
-需要转义-成为&
字符实体引用。[1]请注意,.NET附带的另一个XML解析器
System.Xml.Linq.XDocument
表现出相同的行为。[2]只有当你需要在一个双引号的属性值中 * 嵌入 *
"
个字符 * 时,才需要转义;例如<foo stage-name="Nat "King" Cole" />
,以便使stage-name
属性包含逐字Nat "King" Cole
。fafcakar2#
我这样做了,它为我工作。可能是你让它工作的唯一方法然而,这是一个非常简单的答案。
因为我得到了更多的信息,所以重写了我的答案。如果是这种情况,最好的做法是将
"
中的&替换为&quot;
给予看有没有用告诉我