如何从XmlSchema.Elements获取第一项

时间:2014-10-04 17:26:45

标签: c# .net xml xsd .net-4.5

我有XmlSchema对象。其中有Elements属性。 我需要第一个元素。我不知道如何让它不写foreach / break(看起来很愚蠢)。有一个很好的方式吗?

编辑:我找到的唯一方法是:getenumerator / movenext / value;

EDIT2:其中一种方法是将XmlSchema.Elements.Values(ICollection)转换为与Linq一起使用的有意义类型。问题是我找不到那种类型。 GetType为我命名:" System.Xml.Schema.XmlSchemaObjectTable + ValuesCollection"

我没有在ObjectExplorer中看到这种类型而且我无法投射它......

如果你有工作解决方案,请回答,而不是只是扔掉你头脑中的任何东西。感谢。

1 个答案:

答案 0 :(得分:1)

在元素的名称或值上使用linq,具体取决于您的需要

,例如,

var v = yourObject.Elements.Names.OfType<XmlQualifiedName>().FirstOrDefault();
var w = yourObject.Elements.Values.OfType<XmlSchemaElement>().FirstOrDefault();

===

已编辑:已添加OfType&lt;&gt;得到ICollection&lt;&gt;而不是ICollection,以便可以使用FirstOrDefault

注意:我在http://msdn.microsoft.com/en-us/library/system.xml.schema.xmlschema%28v=vs.110%29.aspx的示例XmlSchema上验证了此解决方案,如果您的元素名称或值具有不同的类型,则需要在OfType&lt;&gt;

中更改它