我想转换一下:
<translation>
1 Sənədlər
</translation>
要
使用C#在XML中<translation>1 Sənədlər</translation>
。
请帮帮我。只有翻译标签 我试过这个:
XDocument xdoc = XDocument.Load(path);
xdoc.Save("path, SaveOptions.DisableFormatting);
但它不会删除<translation>
标记之间的新行。
答案 0 :(得分:3)
你应该有什么工作。您可以通过将XDocument转储到字符串变量来确认SaveOptions是否正在删除格式。
例如:我尝试了以下内容,内容没有任何格式,包括换行符和空格。
from __future__ import print_function
答案 1 :(得分:2)
代码中的新行由&#34; \n
&#34;并且还可能&#34; \r
&#34;。你可以简单地删除这些:
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>
Becomming:
<translation>1 Sənədlər</translation>
我希望这会有所帮助。
答案 2 :(得分:0)
您可以使用
以对环境敏感的方式手动删除换行符var content = xmlString.Replace(Environment.NewLine, string.Empty)
答案 3 :(得分:0)
XML定义了两种类型的空白:重要和无意义:
无关紧要的空白是文本内容不发生的元素之间的空白,而重要的空白是包含文本内容的元素中的空白。您可能会发现this article中的图形有助于显示差异。
translation
元素中的内容是重要的空格;元素包含文本,因此假定它是元素内容的一部分。如果没有模式或DTD表明它可以折叠,那么在读取或写入时不会改变空白处理的数量将会删除它。这些选项仅与无关紧要的空格有关。
您可以做的是应用您自己的处理:使用LINQ to XML,您可以使用以下内容修剪所有仅包含文本的元素的空白:
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了解演示。