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

时间:2013-07-01 19:32:20

标签: c# xml asp.net-mvc linq

在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字符串获取,那么哪种方法更受欢迎?

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

有几个原因,你不应该像第一个例子那样做

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

答案 2 :(得分:1)

第二个更好,因为XElement会为你逃避所有的值。