【问题标题】:How not to encode values in XML如何不在 XML 中编码值
【发布时间】:2016-08-08 01:24:39
【问题描述】:

我有一个在 C# 脚本中编辑的 xml 文档。

  1. 我正在使用 .load 来读取文档。
  2. .SelectSingleNode 查找要编辑的节点。
  3. 设置我要设置的属性的.value。
  4. 使用 .Save

问题来了……

我将 Salesforce 接口的 SQL 语句保存在 .value 中。当您使用 .save 时,它​​会将字符串编码(> 成 &gt)。我不能这样做,因为 Salesforce 确实知道如何编码/解码,所以它必须是我设置的特定字符串。在不编码的情况下保存文档的最佳方法是什么。我想我可以读取 xml 文档并解析为文件流,当我得到它时编辑字符串,但这似乎很麻烦....

【问题讨论】:

  • 您能否在问题中编辑代码示例,以确保每个人都在同一页面上?
  • 这种编码是有原因的:否则文档将是无效的 XML。请出示样本。
  • 使用元素而不是属性。使用 CDATA 部分。在 CDATA 部分中,> 等字符无需编码即可存储。
  • 嗨,德伍德!由于您是新来的,请给我一个提示:这个问题仍然悬而未决吗?您需要进一步的帮助吗?请注意,大多数在 SO 上给出答案的专业人士都渴望获得声誉积分。 Please read this: someone-answers。谢谢!

标签: c# sql xml decode encode


【解决方案1】:

从技术上讲,XML 是一个字符串。换句话说:一串字符。

区别在于标记。您需要特殊字符来区分它们。

三个字符是绝对神圣不可侵犯的:和&

前两个构建标记,最后一个是转义字符,告诉阅读实例:看,这是一个特殊字符!

如果您想在 XML 中使用这些字符,您必须使用< >& 对它们进行转义。其余的取决于给定的编码。 UTF8 处理的字符集与 UTF16 不同 - 还有更多...

这意味着:无法在 XML 中编码/转义此类字符。

如果您只想将 XML 作为字符串 处理,这很容易:您的 XmlDocument 具有 OuterXML,这是一个 string 返回属性。它将整个 XML 作为字符串传递。

但请记住,如果您在错误的地方使用未编码的特殊字符,您的 XML 将会中断...

编辑

实际上有一种解决方法(正如 Alexander Petrov 所指出的:CDATA 部分。问题是:接收方如何读取您的数据?如果一切正常 em> 方式,编码没有问题,因为任何阅读器都会在将数据显示给人类阅读器之前对其进行重新编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多