1

我正在从一个 API 导入 xml 数据并将 xml 数据发布到另一个。

我的第一次尝试利用 LINQ 的嵌入值来转换相关值,如下所示:

Dim DetailXML = From product In ProductXML _
  Select <detail>
          <detail.stockcode><%= product.<sku>.Value %></detail.stockcode>
          <detail.stockqty><%= product.<quantity>.Value %></detail.stockqty>
          <detail.orderqty><%= product.<quantity>.Value %></detail.orderqty>
          <detail.gross><%= product.<total_inc_tax>.Value %></detail.gross>
          <detail.taxcode><%= DetailTaxCode %></detail.taxcode>
         </detail>

这相当简洁,很容易理解,只需要大约 200 行代码就可以得到完美运行的东西。

在本网站上关于“最佳实践”的各种评论之后,我使用 xml 序列化将其重新开发为面向对象的解决方案。

我现在拥有所有相关表/字段的类/对象,并带有用于完美序列化的 xml 属性。

这是一项重大任务,最终结果是整个项目的代码增加了大约 10 倍,但实际导入/导出循环的代码并没有显着减少。

我的问题是我为什么要打扰? 在这种情况下,面向对象方法的实际优势是什么(如果有的话)?

这不是一个无聊的问题:API 的数据导入/转换/导出是 IT 通才的面包和黄油,这绝不是一个独特的项目。

谢谢。

4

1 回答 1

0

有人可能会争辩说,与使用 XML 文字自己创建 XML 相比,创建一些对象更简洁、更简洁、更不容易出错。此外,C#人没有 XML 文字(我羡慕你)。

XmlSerializer在我看来,如果您还需要反序列化,最好使用它。使用 XLINQ 解析 XML 并不是最好的代码质量。

XmlSerializer如果您需要保存和加载,这也很有用。例如,您可以很好地将其用作配置存储。

您还可以从 XML 模式生成类。如果有可用的,这通常是最好的选择。

于 2013-08-18T20:39:07.813 回答