C# 关于使用XPath与XML作为类的XML的问题

C# 关于使用XPath与XML作为类的XML的问题,c#,xml,C#,Xml,我的C#代码中使用的XML文件很少 到目前为止,我一直在使用XPATH访问XML节点/属性 问题是,如果我将XML转换为类文件(XSD.EXE),并在可维护性和代码可读性方面使用它,我会得到什么好处 在这两种情况下,我知道如果添加或删除某些节点,代码需要更改 在我的例子中,DLL进入GAC 我只是想听听你的意见 干杯, Karthik将XML转换为XSD然后再转换为C#类的美妙之处在于,您可以轻松地获取另一个文件。您的代码类似于: XmlSerializer ser = new XmlSeria

我的C#代码中使用的XML文件很少

到目前为止,我一直在使用XPATH访问XML节点/属性

问题是,如果我将XML转换为类文件(XSD.EXE),并在可维护性和代码可读性方面使用它,我会得到什么好处

在这两种情况下,我知道如果添加或删除某些节点,代码需要更改

在我的例子中,DLL进入GAC

我只是想听听你的意见

干杯,
Karthik

将XML转换为XSD然后再转换为C#类的美妙之处在于,您可以轻松地获取另一个文件。您的代码类似于:

XmlSerializer ser = new XmlSerializer(typeof(MyClass));
FileStream fstm = new FileStream(@"C:\mysample.xml", FileMode.Open, FileAccess.Read);

MyClass result = ser.Deserialize(fstm) as MyClass;

if(result != null)
{
  // do whatever you want with your new class instance!
}
有了这几行代码,现在就有了一个对象,它可以准确地表示XML所包含的内容,并且可以作为对象实例上的属性访问它的属性——在我看来,这比在XML中执行大量复杂的XPath查询要容易得多


此外,由于现在有了XSD,您还可以轻松地验证传入的XML文件,以确保它们确实与定义的契约相对应-这会减少代码中经常出现的错误检查(不必在每个XPath之后检查是否有任何节点)将XML转换为XSD然后再转换为C#类的美妙之处在于,您可以轻松地获取另一个文件。您的代码类似于:

XmlSerializer ser = new XmlSerializer(typeof(MyClass));
FileStream fstm = new FileStream(@"C:\mysample.xml", FileMode.Open, FileAccess.Read);

MyClass result = ser.Deserialize(fstm) as MyClass;

if(result != null)
{
  // do whatever you want with your new class instance!
}
有了这几行代码,现在就有了一个对象,它可以准确地表示XML所包含的内容,并且可以作为对象实例上的属性访问它的属性——在我看来,这比在XML中执行大量复杂的XPath查询要容易得多


此外,由于现在有了XSD,您还可以轻松地验证传入的XML文件,以确保它们确实与定义的契约相对应-这会减少代码中经常出现的错误检查(不必在每个XPath之后检查是否有任何节点)这实际上与该表达式相匹配。)

谢谢您的评论。在xml作为类的情况下,如何准确地验证xml?在这个代码示例中,使用异常类型throwm?@时,当您尝试调用
ser.Deserialize
时,会出现异常,这将告诉您源XML文件不符合您评论的XSDthanks。在xml作为类的情况下,如何准确地验证xml?在这个代码示例中,使用异常类型throwm?@时,当您尝试调用
ser.Deserialize
时,会出现异常,这将告诉您源XML文件不符合XSD