热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#读取xml呀高手进来给指点一下

有xml如下<body><groupdbidentifyT_D_FJS_DY_TENDERdataid208bfdc4111f417aacb218fa
有xml如下


    
        
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
            
        
        
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
            
        
        
            
                 
没发玩下面接着发

18 个解决方案

#1


  
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
            
        
        
            
                
                    
                
            
            
             
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                
                    
                
            
            
                

            

        

    


现在我要根据 xml 节点的属性值去读取xml里面的数据
我要用group节点下的dbidentify属性值T_D_FJS_DY_TENDER加上group节点下的dbidentify属性值T_D_FJS_APPMETHOD加上group节点下的dbidentify属性值T_D_FJS_APPMETHOD_TYPE加上group节点下的dbidentify属性值T_D_FJS_TENDER_RESULT加上group节点下的dbidentify属性值T_D_FJS_TENDER_RESULT加上field节点下的dbidentify属性值等于SUGGEST集合,
方法xFile.ReadStringList(pate,  "T_D_FJS_DY_TENDER/T_D_FJS_APPMETHOD/T_D_FJS_APPMETHOD_TYPE/T_D_FJS_TENDER_RESULT/SUGGEST"); 红色字就是dbidentify属性的值 读出来的值应该是:1,2,3,4,5,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35 
那位帮忙看一下有没简单的方法 红色字的这个参数是不固定的也有可能只有T_D_FJS_DY_TENDER/T_D_FJS_APPMETHOD/T_D_FJS_PARENT_RESULT/SUGGEST 是这样 读出来的数据就是:6,16,25,26

#2


#3


莫晕呀  我今天弄了一天 弄是弄出来了 但是是死的 不行 哎  那个有没的那的方法 贴个代码出来看哈嘛  谢谢

#4


用dataset读,操作起来跟读数据库一样

#5


太长了,不想看。
递归遍历的方法不行吗?

#6


rtjdrt6ik6ro6r

#7



protected void BuildFields(XmlNode root, EntityData entity)
        {
            XmlNodeList list = root.SelectNodes("MemberDefinition/EntityMember");
            if (((this.menbers != null) && (this.menbers.Length > 0)) && (list != null))
            {
                for (int i = 0; i < list.Count; i++)
                {
                    string name = list[i].Attributes["Name"].Value;
                    if (entity.Tables.Contains(name))
                    {
                        DataTable table = entity.Tables[name];
                        XmlNodeList list2 = list[i].SelectNodes("Fields/Field");
                        for (int j = 0; j < list2.Count; j++)
                        {
                            DataColumn column = new DataColumn(list2[j].Attributes["Name"].Value, Type.GetType(list2[j].Attributes["DataType"].Value));
                            if (list2[j].Attributes["DefaultValue"] != null)
                            {
                                column.DefaultValue = list2[j].Attributes["DefaultValue"].Value;
                            }
                            table.Columns.Add(column);
                        }
                        XmlNodeList list3 = list[i].SelectNodes("Keys/Key");
                        if ((list3 != null) && (list3.Count > 0))
                        {
                            DataColumn[] columnArray = new DataColumn[list3.Count];
                            for (int k = 0; k < list3.Count; k++)
                            {
                                columnArray[k] = table.Columns[list3[k].Attributes["Name"].Value];
                                if (columnArray[k].DefaultValue.Equals(DBNull.Value))
                                {
                                    columnArray[k].DefaultValue = "0";
                                }
                            }
                            table.PrimaryKey = columnArray;
                        }
                    }
                }
            }
        }

#8


关键是他传进来的那个参数不一定呀 
T_D_FJS_DY_TENDER/T_D_FJS_APPMETHOD/T_D_FJS_APPMETHOD_TYPE/T_D_FJS_TENDER_RESULT/SUGGEST有些时候没这长T_D_FJS_DY_TENDER/T_D_FJS_APPMETHOD/T_D_FJS_PARENT_RESULT/SUGGEST

#9


引用 7 楼 ajq1989 的回复:
C# code

protected void BuildFields(XmlNode root, EntityData entity)
        {
            XmlNodeList list = root.SelectNodes("MemberDefinition/EntityMember");
            if (((this.menbers != ……
这方法不行的

#10


该回复于2010-12-28 10:10:35被版主删除

#11


咱没人进来呀......................

#12


建议使用XmlDocument对象的 SelectNodes 方法  已重载。 选择匹配 XPath 表达式的节点列表。 (从 XmlNode 继承。)

XPath语法可以参考:
http://www.w3school.com.cn/xpath/index.asp

http://msdn.microsoft.com/zh-cn/library/ms256086(VS.80).aspx

#13


看看LINQ TO XML

#14


引用 12 楼 feg545 的回复:
建议使用XmlDocument对象的 SelectNodes 方法 已重载。 选择匹配 XPath 表达式的节点列表。 (从 XmlNode 继承。)

XPath语法可以参考:
http://www.w3school.com.cn/xpath/index.asp

http://msdn.microsoft.com/zh-cn/library/ms256086(VS.80).aspx
XPath我看过还是没弄出来 

#15


引用 14 楼 z050301402 的回复:
引用 12 楼 feg545 的回复:
建议使用XmlDocument对象的 SelectNodes 方法 已重载。 选择匹配 XPath 表达式的节点列表。 (从 XmlNode 继承。)

XPath语法可以参考:
http://www.w3school.com.cn/xpath/index.asp

http://msdn.microsoft.com/zh-cn/library/……


我来帮你看看,正好也复习一下XPATH

说说你这个地方能不能确定具体传进来的值有几个?
T_D_FJS_DY_TENDER/T_D_FJS_APPMETHOD/T_D_FJS_APPMETHOD_TYPE/T_D_FJS_TENDER_RESULT/SUGGEST

T_D_FJS_DY_TENDER/T_D_FJS_APPMETHOD/T_D_FJS_PARENT_RESULT/SUGGEST

这两种情况,还有别的情况吗?

#16


引用 15 楼 feg545 的回复:
引用 14 楼 z050301402 的回复:
引用 12 楼 feg545 的回复:
建议使用XmlDocument对象的 SelectNodes 方法 已重载。 选择匹配 XPath 表达式的节点列表。 (从 XmlNode 继承。)

XPath语法可以参考:
http://www.w3school.com.cn/xpath/index.asp

http://msdn.mic……

还有呀  是不固定的 

#17


引用 15 楼 feg545 的回复:
引用 14 楼 z050301402 的回复:
引用 12 楼 feg545 的回复:
建议使用XmlDocument对象的 SelectNodes 方法 已重载。 选择匹配 XPath 表达式的节点列表。 (从 XmlNode 继承。)

XPath语法可以参考:
http://www.w3school.com.cn/xpath/index.asp

http://msdn.mic……


要不你加我QQ我把xml发你你帮我看看 谢谢:我QQ:50301402

#18



XmlDocument xdoc = new XmlDocument();
xdoc.Load("data.xml");

//string query = "T_D_FJS_DY_TENDER/T_D_FJS_APPMETHOD/T_D_FJS_PARENT_RESULT/SUGGEST";
string query = "T_D_FJS_DY_TENDER/T_D_FJS_APPMETHOD/T_D_FJS_APPMETHOD_TYPE/T_D_FJS_TENDER_RESULT/SUGGEST";
XmlNodeList list = xdoc.SelectNodes(getXPathStr(query));

foreach (XmlNode xn in list)
            {
                textBox1.Text += xn.InnerText+"   ";
            }


//拼接XPATH的方法
        public string getXPathStr(string query)
        {
            string result = "//body";
            string[] arr = query.Split(new string[] { "/" },StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < arr.Length - 1; i++)
            {
                if (arr[i].ToLower() != "suggest")
                {
                    //依次选取group节点的dbidentify属性为对应的值
                    result += "/group[@dbidentify='" + arr[i] + "']";
                }
                else
                {
                    //suggest的节点名称不同
                    result += "/field[@dbidentify='SUGGEST']";
                }
            }
            return result;
        }


推荐阅读
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文介绍了在实现了System.Collections.Generic.IDictionary接口的泛型字典类中如何使用foreach循环来枚举字典中的键值对。同时还讨论了非泛型字典类和泛型字典类在foreach循环中使用的不同类型,以及使用KeyValuePair类型在foreach循环中枚举泛型字典类的优势。阅读本文可以帮助您更好地理解泛型字典类的使用和性能优化。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文总结和分析了JDK核心源码(2)中lang包下的基础知识,包括常用的对象类型包和异常类型包。在对象类型包中,介绍了Object类、String类、StringBuilder类、StringBuffer类和基本元素的包装类。在异常类型包中,介绍了Throwable类、Error类型和Exception类型。这些基础知识对于理解和使用JDK核心源码具有重要意义。 ... [详细]
  • 本文介绍了如何使用OpenXML按页码访问文档内容,以及在处理分页符和XML元素时的一些挑战。同时,还讨论了基于页面的引用框架的局限性和超越基于页面的引用框架的方法。最后,给出了一个使用C#的示例代码来按页码访问OpenXML内容的方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • php缓存ri,浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkp ... [详细]
  • 本文介绍了如何对PHP二维数组进行排序以及如何获取最大值。同时还提到了在数据分析系统中使用排序的实例,以及如何统计角色等级和创建角色总数。 ... [详细]
author-avatar
业余爱好者
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有