在 C# 中用“”替换新行
replace new lines with "" in C#
我想转换这个:
<translation>
1 Sənədlər
</translation>
至
<translation>1 Sənədlər</translation>
在 XML 中使用 C#。
请帮助我。仅翻译标签。
我试过这个:
XDocument xdoc = XDocument.Load(path);
xdoc.Save("path, SaveOptions.DisableFormatting);
但它不会删除 <translation>
标签之间的新行。
代码中的新行由“\n
”决定,也可能由“\r
”决定。您可以简单地删除这些:
string xmlString = "<translation>\r\n1 Sənədlər\r\n</translation>"; // With the 'new lines'
xmlString = xmlString.Replace("\r", "").Replace("\n", "");
这将导致:
<translation>
1 Sənədlər
</translation>
成为:
<translation>1 Sənədlər</translation>
希望对您有所帮助。
你所拥有的应该有用。您可以通过将 XDocument 转储到字符串变量来进行验证,以确认 SaveOptions 是否正在删除格式。
例如:我尝试了以下内容,内容没有任何格式,包括换行符和空格。
XDocument xmlDoc = new XDocument(new XElement("Team", new XElement("Developer", "Sam")));
var content = xmlDoc.ToString(SaveOptions.DisableFormatting);
您可以使用
以环境敏感的方式手动删除换行符
var content = xmlString.Replace(Environment.NewLine, string.Empty)
XML 定义了两种类型的空白:重要的和无关紧要的:
无关紧要的空白是元素之间不出现文本内容的空白,而重要的空白是包含文本内容的元素内的空白。您可能会发现 this article 中的图形有助于显示差异。
您的 translation
元素中有 重要的 空格;该元素包含文本,因此假定它是元素内容的一部分。如果没有说明它可以折叠的模式或 DTD,则无论对读取或写入时的空白处理进行多少更改都无法消除它。这些选项仅与 insignificant 空格有关。
你可以做的是应用你自己的处理:使用 LINQ 到 XML,你可以 trim 使用像这样的东西只包含文本的所有元素的空白:
var textElements = doc.Descendants()
.Where(element => element.Nodes().All(node => node is XText));
foreach (var element in textElements)
{
element.Value = element.Value.Trim();
}
有关演示,请参阅 this fiddle。
我想转换这个:
<translation>
1 Sənədlər
</translation>
至
<translation>1 Sənədlər</translation>
在 XML 中使用 C#。
请帮助我。仅翻译标签。
我试过这个:
XDocument xdoc = XDocument.Load(path);
xdoc.Save("path, SaveOptions.DisableFormatting);
但它不会删除 <translation>
标签之间的新行。
代码中的新行由“\n
”决定,也可能由“\r
”决定。您可以简单地删除这些:
string xmlString = "<translation>\r\n1 Sənədlər\r\n</translation>"; // With the 'new lines'
xmlString = xmlString.Replace("\r", "").Replace("\n", "");
这将导致:
<translation>
1 Sənədlər
</translation>
成为:
<translation>1 Sənədlər</translation>
希望对您有所帮助。
你所拥有的应该有用。您可以通过将 XDocument 转储到字符串变量来进行验证,以确认 SaveOptions 是否正在删除格式。
例如:我尝试了以下内容,内容没有任何格式,包括换行符和空格。
XDocument xmlDoc = new XDocument(new XElement("Team", new XElement("Developer", "Sam")));
var content = xmlDoc.ToString(SaveOptions.DisableFormatting);
您可以使用
以环境敏感的方式手动删除换行符var content = xmlString.Replace(Environment.NewLine, string.Empty)
XML 定义了两种类型的空白:重要的和无关紧要的:
无关紧要的空白是元素之间不出现文本内容的空白,而重要的空白是包含文本内容的元素内的空白。您可能会发现 this article 中的图形有助于显示差异。
您的 translation
元素中有 重要的 空格;该元素包含文本,因此假定它是元素内容的一部分。如果没有说明它可以折叠的模式或 DTD,则无论对读取或写入时的空白处理进行多少更改都无法消除它。这些选项仅与 insignificant 空格有关。
你可以做的是应用你自己的处理:使用 LINQ 到 XML,你可以 trim 使用像这样的东西只包含文本的所有元素的空白:
var textElements = doc.Descendants()
.Where(element => element.Nodes().All(node => node is XText));
foreach (var element in textElements)
{
element.Value = element.Value.Trim();
}
有关演示,请参阅 this fiddle。