【问题标题】:Hard coded string manipulation vs Xelement when creating XML element [closed]创建 XML 元素时的硬编码字符串操作与 Xelement [关闭]
【发布时间】:2013-06-29 00:47:22
【问题描述】:

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

方法一

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>";

方法二

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 字符串,哪种方法更可取?

【问题讨论】:

  • XElement。它不仅会为您自动对内容进行 XML 编码,还会使其更易于处理。
  • -1 表示基于意见的问题,尽管选择 2 显然更好。
  • @Brad:嗯。我不会将此称为意见问题。使用字符串操作显然是错误的。
  • 谢谢布拉德,我是新手,这个问题有一天可能会帮助另一个新手学习。
  • 这不是一个基于意见的问题。可以用准确且不含糊的方式回答。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-07-14
        • 1970-01-01
        • 1970-01-01
        • 2015-05-05
        • 1970-01-01
        • 2013-10-17
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多