是否有一种“标准”方法可以将此类内容转换为一组 C# 类?
<!DOCTYPE MESSAGES [
<!ELEMENT MESSAGES (MSG*)>
<!ELEMENT MSG (TO+,BODY,MSG_ID,BILLING)>
<!ATTLIST MSG TYPE (CONTENT|LOGO|RINGTONE|PICTURE|OTAPUSH|BINFWD|LONGSMS|2DCODE) #REQUIRED>
<!ELEMENT TO (#PCDATA)>
<!ATTLIST TO PROVID (1|2|3|5|6|7) #IMPLIED >
<!ATTLIST TO TYPE (NPM|EMS) #IMPLIED>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT MSG_ID (#PCDATA)>
<!ELEMENT BILLING (#PCDATA)>
<!ELEMENT DELIVERY (#PCDATA)>
<!ELEMENT EXPDATE (#PCDATA)>
]>
我有一些更多信息,但非常感谢将 ELEMENT 和 ATTLIST 转换为 C# 的方法。
最佳答案
您的意思是从该数据生成此类的实例,还是从该数据生成类定义?对于后者,您可以使用 XSD 到 C# 生成器来获取保存此信息的类定义。对于前者……情况更复杂。见下文。
此数据是否位于 CDATA 元素内?
如果是这样,将其转换为 C# 类的实例可能会有点困难。 如果没有,那实际上相当简单。
看一下 LINQ 到 XML:http://msdn.microsoft.com/en-us/library/bb387061.aspx
我使用 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();
这里的X是一个XDocument,Parameter是一个包含Name、Value、Run等成员的类。 x.Descendants 获取根节点的子节点,其中它们是名为 Parameter 的节点。您可以访问属性值,并将成员变量设置为等于它们。通过这种方式,您可以获得代表 xml 文件中某种特定类型的所有元素的类列表,然后可以花更少的时间进行解析,而将更多的时间花在出色的工作上。
关于c# - 如何将此 XML 定义转换为 C# 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4186769/