C#学习教程:在不知道结构的情况下以通用方式读取xml文件/字符串一个XML树可以有n个子级。我不知道确切的数字。我的内存中对象具有绑定到树控件的子属性和父属性。当我不知道如何准确调用/写入xml元素标记时,如何以通用方式将xml文件/字符串读入我的内存对象?例如,有人可以向我提供一个单元的xml结构吗,其中每个单元都有很多单元等...所以我知道xml标签是“单元”,但它也可以是“模块”或其他任何东西...它有通用但我不是要求用户输入一个xml元素标签名称,如“单元”。这有可能实现我想要实现的目标吗?无论哪种方式,您都必须知道节点名称才能解析层次结构,至少您必须有一个定义。恕我直言,XElement是唯一的通用XML解析器。例如,您有一个这样的XML:正如我之前所说,您应该有一些定义,例如根节点必须是层次结构元素名称,子容器必须是根节点名称+s。这是一种允许用户指定他们希望但有一些限制的任何节点名称的简单方法。您可以使用XElement来解析XML,如下所示:XElementxElement=XElement.Load(@"pathtoyourxmlfile");stringrootNodeName=xElement.Name.LocalName;IEnumerablexElements=xElement.Descendants(rootNodeName+"s");当然你可以LinqxElements和解析你可以重复构建树控件层次结构。您可以使用此链接开始使用xElement:希望对您有所帮助。我只是将它加载到XmlDocument中,然后通过XmlNodes构建树。我相信有可能实现你想要实现的目标。我会做这样的事情:classGenericNode{privateList_Nodes=newList();私有列表_Attributes=newList();publicGenericNode(XElementElement){this.Name=Element.Name;this._Nodes.AddRange(Element.Elements().Select(e=>NewGenericNode(e));this._Attributes.AddRange(Element.Attributes().Select(a=>NewGenericKeyValue(a.Key,a.价值))}公共字符串名称{得到;私有集;}公共IEnumerable节点{得到{返回this._Nodes;}}公共IEnumerable属性{得到{返回this._Attributes;}}}类GenericKeyValue{publicGenericKeyValue(字符串键,stringValue){this.Key=Key;this.Value=Value;}publicstringKey{get;set;}publicstringValue{get;set;}}然后你简单地说:XElementrootElement=XElement.Parse(StringOfXml);//或者XElementrootElement=XElement.Load(FileOfXml);GenericNoderootNode=newGenericRode(rootElement);看一下XmlTextReader和System.Xml包。本文还将帮助您:喜欢这样吗?以上就是C#学习教程:在不了解结构的情况下,通俗地阅读xml文件/字符串共享的全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——usingSystem.Xml;使用System.IO;classProgram{staticvoidMain(string[]args){using(StreaminputStream=OpenXmlStream()){XmlDocument文档=newXmlDocument();文档.Load(输入流);流程(文档);}}staticStreamOpenXmlStream(){//为程序提供输入流}staticvoidProcess(XmlDocumentdocument){//在这里做一些有用的事情}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
