如何不在XML中编码值

时间:2016-04-15 22:31:24

标签: c# sql xml decode encode

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

  1. 我正在使用.load来阅读文档。
  2. .SelectSingleNode找到要编辑的节点。
  3. 设置我想要设置的属性的.value。
  4. 使用.Save
  5. 这是擦......

    我正在为.value中的Salesforce接口保存一条SQL语句。当您使用.save时,它会对字符串进行编码(> into& gt)。我不能拥有这个,因为Salesforce确实知道如何编码/解码所以它必须是我设置的特定字符串。没有编码保存文档的最佳方法是什么。我想我可以阅读xml doc并解析为文件流,当我到达它时编辑字符串但它看起来很麻烦....

1 个答案:

答案 0 :(得分:1)

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

标记的区别在于什么。您需要特殊字符以区别于其他字符。

三个字符绝对神圣不可侵犯:<,>和&

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

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

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

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

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

修改

实际上有一种方法(正如亚历山大·彼得罗夫所指出的那样:一个CDATA部分。问题是:接收者如何阅读您的数据?如果一切顺利正常方式,编码没有问题,因为任何读者都会在将数据显示给人类读者之前对其进行重新编码。