如何在没有 XML Prolog 的情况下保存 XmlDocument?
How can I save an XmlDocument without the XML Prolog?
在保存后以某种方式将 csproj 文件作为 xml 文件 (xmlDocument
) 处理时,编码从 UTF-8 更改为 ASCII。我想出的唯一解决方案是将 StreamWriter
与声明的编码一起使用。但这会向文件添加 header。
问题:
1. 你知道这个问题的其他解决方案吗?
2. 我可以保留更改的 csproj 吗?
StreamReader sr = new StreamReader(projectFilePath, Encoding.UTF8);
XmlDocument xmlCsproj = new XmlDocument();
xmlCsproj.Load(sr);
sr.Close();
// Working on XML nodes (replace references paths)
StreamWriter sw= new StreamWriter(projectFilePath, false, Encoding.UTF8);
xmlCsproj.Save(sw);
sw.Close();
这应该有用吗?
var writer = new XmlTextWriter(projectFilePath, Encoding.UTF8)
{
Formatting = Formatting.Indented
};
xmlCsproj.WriteContentTo(writer);
writer.Close();
首先,UTF8 字符值与 0-127 范围内的 US-ASCII 值相同。无法确定 csproj 文件是保存为 US-ASCII 还是 UTF8,除非该文件包含非英语文本,例如非英语文件路径。那是这里发生的事吗?即便如此,XmlDocument.Save
应该默认使用 UTF8。
您可以控制如何使用 XmlWriter 和 XmlWriterSettings 将 XmlDocument 写入流或文件。在这种情况下,您需要设置 OmitXmlDeclaration :
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
var writer = XmlWriter.Create(projectFilePath, settings);
xmlCsproj.Save(sw);
sw.Close();
默认编码为UTF8。要更改它,您可以将 XmlWriterSettings.Encoding 设置为不同的值
在保存后以某种方式将 csproj 文件作为 xml 文件 (xmlDocument
) 处理时,编码从 UTF-8 更改为 ASCII。我想出的唯一解决方案是将 StreamWriter
与声明的编码一起使用。但这会向文件添加 header。
问题:
1. 你知道这个问题的其他解决方案吗?
2. 我可以保留更改的 csproj 吗?
StreamReader sr = new StreamReader(projectFilePath, Encoding.UTF8);
XmlDocument xmlCsproj = new XmlDocument();
xmlCsproj.Load(sr);
sr.Close();
// Working on XML nodes (replace references paths)
StreamWriter sw= new StreamWriter(projectFilePath, false, Encoding.UTF8);
xmlCsproj.Save(sw);
sw.Close();
这应该有用吗?
var writer = new XmlTextWriter(projectFilePath, Encoding.UTF8)
{
Formatting = Formatting.Indented
};
xmlCsproj.WriteContentTo(writer);
writer.Close();
首先,UTF8 字符值与 0-127 范围内的 US-ASCII 值相同。无法确定 csproj 文件是保存为 US-ASCII 还是 UTF8,除非该文件包含非英语文本,例如非英语文件路径。那是这里发生的事吗?即便如此,XmlDocument.Save
应该默认使用 UTF8。
您可以控制如何使用 XmlWriter 和 XmlWriterSettings 将 XmlDocument 写入流或文件。在这种情况下,您需要设置 OmitXmlDeclaration :
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
var writer = XmlWriter.Create(projectFilePath, settings);
xmlCsproj.Save(sw);
sw.Close();
默认编码为UTF8。要更改它,您可以将 XmlWriterSettings.Encoding 设置为不同的值