创建XML元素时,硬编码字符串操作与Xelement

本文关键字:字符串 编码字符 操作 Xelement 编码 XML 元素 创建 | 更新日期: 2023-09-27 18:20:32

在c#中,如果我必须创建一个新的XElement,我可以使用以下两种方法。

方法1

string m = "<address>";
       m += "<addressline1>" + address.Addressline1 + "</addressline1>";
       m += "<addressline2>" + address.Addressline2 + "</addressline2>";
       m += "<city>" + address.Addressline1 + "</city>";
       m += "<postcode>" + address.Addressline1 + "</postcode>";
       m += "</address>";

方法2

XElement a = new XElement("address",
                     new XElement("addressline1", address.Addressline1),
                     new XElement("addressline2", address.Addressline2),
                     new XElement("city", address.City),
                     new XElement("postcode", address.postcode)
                                  );

如果我的最终目标只是获得作为XML字符串的自定义对象,那么哪种方法更可取?

创建XML元素时,硬编码字符串操作与Xelement

永远不要使用字符串操作来构建XML。请改用XML API,如XElement。它知道XML的所有规则,而字符串串联则不知道。

我强烈建议使用第二种方法。当然,如果你的值来自变量。如果您的xml已定义并且不会更改,请将其以xml文件的形式存储在文件系统中,并根据需要加载。

有几个原因为什么你不应该做在第一个例子

  • 数据可以包含可能导致问题的<>字符,第二种方式会自动处理
  • 在第一种情况下,代码可读性显著下降
  • 硬代码是一个严重的反模式
  • 第二种方法为将对象作为XML文档进行进一步操作提供了坚实的工具

第二个更好,因为XElement将为您转义所有值。