【问题标题】:Autogenerate DTO elements when loading an XML for Deserialization加载 XML 以进行反序列化时自动生成 DTO 元素
【发布时间】:2015-06-13 10:27:27
【问题描述】:

在为反序列化加载适当的 XML 时,建议我为自动生成 DTO 元素提供适当的解决方案。

这是我的 DTO

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;

namespace GHelper.DTO
{
    public class ElementsDTO
    {
        [XmlRoot("GalLC")]
        public class FareBB
        {
            [xmlElement("Ip")]
            public string strIp { get; set; }
            [xmlElement("Port")]
            public int intPort { get; set; }
            [xmlElement("Type")]
            public int intPort{ get; set; }
            [xmlElement("Email")]
            public string strEmail{ get; set; }
        }
    }
}

这是我的 XML

<GalLC>
    <Ip>192.168.2.100</Ip>
    <Port>5051</Port>
    <Type></Type>
    <Email></Email>
</GalLC>

问题是:当我得到一个冗长的 XML 时,我会花费大量时间来为它创建一个 DTO。 请给我一些关于自动创建 DTO 的建议。

【问题讨论】:

  • 您有 XML 架构 (XSD) 吗?有一些工具可以从这些生成类定义。没有它,任何工具都会猜测数据类型和结构是什么。
  • 我可能会得到不同的 XML。所以结构也会发生变化吧?。
  • 我希望你明白我正在尝试对对象进行反序列化。
  • 您是否从 XML 中提取每个元素?除了使用序列化之外,还有很多解析 XML 的方法。编写解析代码的时间和编写序列化代码的时间大致相等。
  • @SusajSNair 是的。但是您不能从示例文件中生成类/对象——您需要一个 XML 模式。它怎么知道只允许一个IP?它怎么知道Port 是一个整数?

标签: c# xml dto


【解决方案1】:

鉴于听起来您已经知道如何获取 XML 架构定义 (XSD) you could use XSD.exe to generate the classes 或者有 even online tools 用于它...如果您想要真正定制的东西,您可以查看 @987654323 @。

【讨论】:

  • 谢谢它部分地帮助了我..like,创建类。 De序列化我该怎么办.. :(
  • 从那时起,您应该可以使用XmlSerializer 或类似名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多