c# - 使用字符串连接构建 XML 有什么不好的地方?

标签 c# xml string

在线程中What’s your favorite “programmer ignorance” pet peeve? ,出现以下答案,获得大量点赞:

Programmers who build XML using string concatenation.

我的问题是,为什么通过字符串连接(例如 C# 中的 StringBuilder)构建 XML 不好?

我过去曾多次这样做过,因为有时这是我在处理我正在使用的数据结构/对象时从 A 点到达 B 点的最快方法。到目前为止,我已经提出了一些为什么这不是最好的方法的原因,但是有什么我忽略的吗?为什么要避免这种情况?

  1. 我能想到的最大原因可能是您需要手动转义字符串,而大多数新程序员(甚至一些经验丰富的程序员)都会忘记这一点。当他们测试它时,它会非常适合他们,但是当有人在他们的输入中的某个地方抛出 & 符号时,他们的应用程序会“随机”失败。好的,我会买这个,但是预防这个问题真的很容易(SecurityElement.Escape 就是其中之一)。
  2. 当我这样做时,我通常会省略 XML 声明(即 <?xml version="1.0"?> )。这有害吗?
  3. 绩效处罚?如果您坚持使用正确的字符串连接(即 StringBuilder ),这有什么需要担心的吗?据推测,类似 XmlWriter 的类还需要进行一些字符串操作...
  4. 还有更优雅的方式生成 XML,例如使用 XmlSerializer自动序列化/反序列化您的类。好吧,我同意。 C# 为此提供了大量有用的类,但有时我不想为某些非常快速的事情创建一个类,例如写出日志文件或其他东西。难道这只是我的懒惰吗?如果我正在做一些“真实的”事情,这是我处理 XML 的首选方法。

最佳答案

您可能会得到无效的 XML,但直到再次解析它时您才会发现 - 然后就为时已晚了。我经历了惨痛的教训才明白这一点。

关于c# - 使用字符串连接构建 XML 有什么不好的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18671965/

相关文章:

c# - 将数据从 DataTable 传输到 Access 数据库时出现 Insert INTO 错误

c# - Azure WCF 服务在 blob 存储文件上出现错误

javascript - Angular 6 中的 xml2js : Can't resolve 'stream' and 'timers'

java - 案件被跳过并被送去抓捕?

c# - 如何将字节数组从 C++ 返回到 C#

python - 使用 Python 将多个文本替换为 XML 中相应的文本

sql-server - 在 T-SQL 中反序列化 XML 对象

arrays - 如何将字符串转换为字符串数组

c++ - 从字符串中删除空格,不包括 "and ' C++ 对之间的部分

c# - Xamarin.Forms:之后更改 RelativeLayout 约束