当前位置: 首页 > 编程语言 > C#

如何编写单个LINQtoXML查询来遍历所有子元素和子元素的所有属性?分享

时间:2023-04-10 18:15:56 C#

如何编写单个LINQtoXML查询来遍历所有子元素和子元素的所有属性?我正在开发一个asp.net移动应用程序。我使用XML作为数据库。我在.net中使用LINQtoXML查询XML以访问所需的元素和属性。我的XML文件中有以下部分。ProductionMasterValveProductionWingValve在上面的XML文件中,我可以动态访问子元素节点“VALVE”及其属性“NAME”,而无需使用以下代码显式指定属性的名称。因此,当在子节点“VALVE”中添加任何新属性时,我可以在不修改现有代码的情况下访问它。对于这样的逻辑,我使用下面的代码。在下面的代码中,ValvesProperties是一个Hashtable,它在“Valves”类中定义。静态整数计数=0;列出LstValves=newList();字符串AttName=空;字符串属性值=null;XDocumentFieldDef=XDocument.Load(@"F:Shailesh来自用户OPCXMLKK3.xml");(“KK”);count=FieldRoot.Element("FIELD-DEFINITION").Element("VALVES").Elements("VALVE").Count();Valves[]Valveobj=newValves[count];计数=0;foreach(FieldRoot.Element("FIELD-DEFINITION").Element("VALVES").Elements()中的var元素){Valveobj[count]=newValves();foreach(element.Attributes()中的var属性){AttName=attribute.Name.ToString();AttValue=attribute.Value.ToString();Valveobj[count].ValvesProperties.Add(AttName,AttValue);LstValves.Add(Valveobj[count]);}计数++;}返回LstValves;上面定义的XML部分需要类似的逻辑。在上面的XML中,我想编写LINQtoXML查询,它可以访问“VALVE”节点()的NAME属性,然后它应该访问“DISPLAY-NODE”(ProductionMasterValve)之间的文本,然后它应该是Dynamic访问“COMMAND”节点的所有属性()。所有这些我都想动态地而不是显式地指定子节点的名称及其属性名称(类似于我编写上述查询的方式)我们可以使用LINQtoXML编写这样的代码吗?如果我们可以在单个逻辑中对上述问题进行编码(类似于我编写上述查询的方式),那就更好了。你能给我任何可以解决上述问题的代码或链接吗?您可以遍历所有元素并检索每个元素的属性:以上是C#学习教程:如何编写单个LINQtoXML查询来遍历所有子元素和子元素的所有属性?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——varallDescendants=myElement.DescendantsAndSelf();varallDescendantsWithAttributes=allDescendants.SelectMany(elem=>new[]{elem}.Concat(elem.Attributes().Cast()));foreach(XContainerelementOrAttributeinallDescendantsWithAttributes){//...}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: