如何将此XML定义转换为C#类

如何将此XML定义转换为C#类,c#,xml,xml-serialization,xsd,C#,Xml,Xml Serialization,Xsd,有没有一种“标准”的方法可以将这样的东西转换成一组C#类 ]> 我有更多的信息,但非常希望能将元素和ATTLIST转换为C#。如果您可以将此DTD作为na XSD文件获得,那么您应该看看.Net附带的工具XSD.Exe,它将位于您的Framework文件夹中 我认为格式应该是 XSD.exe /C myXsd.xsd 以下是该工具的MSDN页面: 但基本上,它会根据模式定义创建类。如果您使用将DTD转换为XSD模式,则可以使用或创建类。您的意思是从该数据生成此类的实例,还是从该数据生成类

有没有一种“标准”的方法可以将这样的东西转换成一组C#类


]>

我有更多的信息,但非常希望能将元素和ATTLIST转换为C#。

如果您可以将此DTD作为na XSD文件获得,那么您应该看看.Net附带的工具XSD.Exe,它将位于您的Framework文件夹中

我认为格式应该是

XSD.exe /C myXsd.xsd
以下是该工具的MSDN页面:


但基本上,它会根据模式定义创建类。

如果您使用将DTD转换为XSD模式,则可以使用或创建类。

您的意思是从该数据生成此类的实例,还是从该数据生成类定义?对于后者,您可以使用XSD到C#生成器来获取保存此信息的类定义。对于前者来说……它更复杂。见下文

此数据是否在CDATA元素中

如果是这样,将其转换为C#类的实例可能会有点困难。 如果不是的话,它实际上相当简单

看看LINQ到XML:

我使用LINQ to XML以这种方式将XML文件直接解析为类:

List<Parameter> tempList = (from param in x.Descendants("Parameter")
                              select new Parameter
                              {
                                  Name = param.Attribute("Name").Value,
                                  Value = param.Attribute("Value").Value,
                                  Run = Convert.ToBoolean(param.Attribute("Run").Value),
                                  Number = (int?) param.Attribute("Number"),
                                  Directory = param.Attribute("Directory").Value,
                                  Filename = (string)param.Attribute("Filename") ?? "None",
                                  Source = (string)param.Attribute("Source") ?? "None",
                                  FileTypes = (string)param.Attribute("FileTypes") ?? "None"
                              }).ToList();
List templast=(来自x.substands(“参数”)中的参数)
选择新参数
{
名称=参数属性(“名称”).值,
值=参数属性(“值”)。值,
Run=Convert.ToBoolean(参数属性(“Run”).Value),
Number=(int?)参数属性(“Number”),
Directory=param.Attribute(“Directory”).Value,
文件名=(字符串)参数属性(“文件名”)??“无”,
源=(字符串)参数属性(“源”)??“无”,
文件类型=(字符串)参数属性(“文件类型”)??“无”
}).ToList();

这里是一个XDocument,Parameter是一个包含名称、值、运行等成员的类。x、 子体获取根节点的子节点,它们是名为Parameter的节点。您可以访问属性值,并将成员变量设置为相等。通过这种方式,您可以获得一个类列表,这些类表示xml文件中特定类型的所有元素,然后可以花更少的时间进行解析,花更多的时间来表现出色。

谢谢,我确实需要首先将此DTD转换为XSD。我还找到了这个工具:@Rudi未找到,还有其他选择吗?w3c工具需要
Perl
?不再可用,还有其他选择吗?我已经更新了指向XML示例代码生成器Kiquenet的链接。
List<Parameter> tempList = (from param in x.Descendants("Parameter")
                              select new Parameter
                              {
                                  Name = param.Attribute("Name").Value,
                                  Value = param.Attribute("Value").Value,
                                  Run = Convert.ToBoolean(param.Attribute("Run").Value),
                                  Number = (int?) param.Attribute("Number"),
                                  Directory = param.Attribute("Directory").Value,
                                  Filename = (string)param.Attribute("Filename") ?? "None",
                                  Source = (string)param.Attribute("Source") ?? "None",
                                  FileTypes = (string)param.Attribute("FileTypes") ?? "None"
                              }).ToList();