using (XmlWriter writer = XmlWriter.Create("books.xml")) {
writer.WriteStartElement("book");
writer.WriteAttributeString("author", "j.k.rowling");
writer.WriteAttributeString("mailBody", mail.BodyText);
writer.WriteString("99");
writer.WriteEndElement();
}我有上面的案例。一切都很好,但是writer.WriteAttributeString("mailBody", mail.BodyText);给出了一个问题。mail.BodyText是一个字符串,内容中有<和>。当xml被写入文件时,我看到的是>和<。我不想要这个加密版。我该怎么解决呢?
发布于 2017-12-22 22:40:25
这不是一个“加密版本”,它是一个符合标准的版本。XML禁止在属性中使用<;您必须改用其对应的字符实体。
这是正确的行为:当您从该XML文件读回属性时,从mailBody属性返回的string将具有原始字符而不是字符实体,因此数据将正确地“往返”。
如果您想要在原始XML表单中显示<和>的部分,请改用CDATA部分:
writer.WriteStartElement("mailBody");
writer.WriteCData(mail.BodyText);
writer.WriteEndElement();发布于 2018-06-22 00:58:17
发布解决方案以供将来参考。
要分别生成<和>字符而不是<和>,需要使用WriteRaw()方法。
下面是实现,
w.WriteStartElement("myRoot");
w.WriteRaw("<");
w.WriteEndElement();输出
<myRoot><</myRoot>希望这能有所帮助。谢谢!
https://stackoverflow.com/questions/47943166
复制相似问题