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被写入文件时,我会看到& gt和& lt。我不想要这个加密版本。我该如何解决?
答案 0 :(得分:2)
这不是“加密版本”,它是符合标准的版本。 XML禁止<
属性;你必须使用相应的字符实体。
这是正确的行为:当您从该XML文件中读回属性时,从string
属性返回的mailBody
将使用原始字符代替字符实体,因此数据将“正确地”往返。
如果您希望在原始XML表单中显示<
和>
的部分,请改为使用CDATA
部分:
writer.WriteStartElement("mailBody");
writer.WriteCData(mail.BodyText);
writer.WriteEndElement();
答案 1 :(得分:-1)
发布解决方案以供将来参考。
要分别生成<
和>
个字符而不是<
和>
,需要使用WriteRaw()
方法。
这是实现,
w.WriteStartElement("myRoot");
w.WriteRaw("<");
w.WriteEndElement();
输出
<myRoot><</myRoot>
希望这会有所帮助。谢谢!