首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于XmlWriter.writeElementString,使用&gt和&lt而不是>和<

对于XmlWriter.writeElementString,使用&gt和&lt而不是>和<
EN

Stack Overflow用户
提问于 2017-12-22 22:33:16
回答 2查看 1.5K关注 0票数 1
代码语言:javascript
复制
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被写入文件时,我看到的是>和<。我不想要这个加密版。我该怎么解决呢?

EN

回答 2

Stack Overflow用户

发布于 2017-12-22 22:40:25

这不是一个“加密版本”,它是一个符合标准的版本。XML禁止在属性中使用<;您必须改用其对应的字符实体。

这是正确的行为:当您从该XML文件读回属性时,从mailBody属性返回的string将具有原始字符而不是字符实体,因此数据将正确地“往返”。

如果您想要在原始XML表单中显示<>的部分,请改用CDATA部分:

代码语言:javascript
复制
writer.WriteStartElement("mailBody");
writer.WriteCData(mail.BodyText);
writer.WriteEndElement();
票数 2
EN

Stack Overflow用户

发布于 2018-06-22 00:58:17

发布解决方案以供将来参考。

要分别生成<>字符而不是&lt;&gt;,需要使用WriteRaw()方法。

下面是实现,

代码语言:javascript
复制
w.WriteStartElement("myRoot");
w.WriteRaw("<");
w.WriteEndElement();

输出

代码语言:javascript
复制
<myRoot><</myRoot>

希望这能有所帮助。谢谢!

Solution Credits

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47943166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档