我试图将ASCII回车返回 添加到XmlNode的InnerText中字符串的末尾,如下所示:
XmlNode spanNode = doc.CreateElement("span");
spanNode.InnerText = "carriage return here: ";
rootNode.AppendChild(spanNode);但是这最终会转义字符串,因此它出现在rootNode的OuterXml中,如下所示:
carriage return here: 
如果我实际上想要返回未转义的回车,该如何添加此文本?
编辑:如果它有区别,这是为文本将显示在PDF注释。我正在更改定义富文本的RC键的值--用这个回车删除一些现有的<span>元素,并添加具有相同回车的新元素。
最后我想说的是:
<root>
<span>carriage return here: </span>
</root>发布于 2016-05-25 19:27:46
您想要包括一个CDATA部分。否则,解析器将将回车解释为不必要的空格。我提到的“重复”链接(在上面的注释中)暗示了这一点,但是MS有更多的信息。只要回车在CDATA部分,就不需要对回车进行编码。
https://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createcdatasection(v=vs.110).aspx
为了便于参考,我修改了Microsoft的示例。注意\r \n字符。
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</book>");
//Create a CData section.
XmlCDataSection CData;
CData = doc.CreateCDataSection("All\r\n Jane\r\n Austen novels 25% off starting 3/23!");
//Add the new node to the document.
XmlElement root = doc.DocumentElement;
root.AppendChild(CData);
Console.WriteLine("Display the modified XML...");
doc.Save(Console.Out);
}
}发布于 2016-05-25 19:04:06
您不是在HTML中,而是在C#中。只需使用适当的字符串字符逃逸序列。如果您不知道确切的转义顺序字母,只需使用相应的ASCII代码或Unicode转义,例如\x0D或\x000D。(小数点13为0维十六进制)
发布于 2016-05-25 19:32:40
通过设置InnerXml而不是InnerText来解决这个问题非常容易
XmlNode spanNode = doc.CreateElement("span");
spanNode.InnerXml = "carriage return here: ";
rootNode.AppendChild(spanNode);编辑:这实际上并没有创建所需的文本。想找一种不同的方法。
https://stackoverflow.com/questions/37445465
复制相似问题