【发布时间】:2021-09-06 00:52:19
【问题描述】:
var data = "{\"#access_token\":\"Vishnu\"}";
XmlDocument doc = (XmlDocument)Newtonsoft.Json.JsonConvert.DeserializeXmlNode(data.ToString(), "root", false, false);
var output = doc.InnerXml.ToString();
预期输出:毗湿奴#access_token>
但得到了:<_x0023_access_token>毗湿奴。
公共静态 XmlDocument DeserializeXmlNode( 字符串值, 字符串反序列化根元素名称, 布尔 writeArrayAttribute, bool encodeSpecialCharacters --> true 和 false 给出相同的结果。 )
请提供一种方法来获取#,因为它是 XML。
【问题讨论】:
-
#不是有效的NameStartChar。因此,您不应该期望任何设计良好的 XML 工具都能生成。公平地说,声称接受 XML 的东西也不应该希望您生成这样的项目。 -
您正在使用 HTML,因此您必须遵循 HTML 特殊字符而不是 XML。为什么标记名有 # 字符?
-
#access_token 是作为 Oauth2.0 流程的一部分接收的密钥,我们必须保留它
-
也许是这样,但这并不意味着您可以违反 XML 规则,即元素名称不能以
#开头。Oauth2.0肯定不是要求您尝试将您的身份验证令牌存储在 XML 中,更不用说将 XML 元素的名称指定为无效的了。 -
知道了。谢谢你。根据 XML 规范,# 不是 XML 名称中的有效字符,因此它不起作用。