C# xml读取操作
以下xml:
- <Project>
- <ProjectMains>
- <ProjectMain Action="added">
- <ProjectID>AQZNSJC</ProjectID>
- <ProjectName>testproject</ProjectName>
- <BeginDate>2012/6/1 0:00:00</BeginDate>
- <EndDate>2020/6/1 0:00:00</EndDate>
- <LedgerID>1002</LedgerID>
- <InUsed>True</InUsed>
- </ProjectMain>
- </ProjectMains>
- </Project>
不带namespace的读取,直接用XPath方式即可:
- XmlDocument doc = new XmlDocument();
- var xml = TextBox1.Text.Trim();
- doc.LoadXml("<load>" + xml + "</load>");
- XmlNodeList ProList = doc.SelectNodes("//ProjectMains");
- foreach (XmlNode node in ProList)
- {
- string ProjectID = node.SelectSingleNode("./ProjectMain/ProjectID").InnerText;
- }
- 换成这样的<ProjectMains xmlns="http://someplace.org">,直接XPath方式就不行了,要AddNamespace后再带前缀去取:
- XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
- nsmgr.AddNamespace("ab", "http://someplace.org");
- XmlNodeList ProList = doc.SelectNodes("//ab:ProjectMains",nsmgr);
- foreach (XmlNode node in ProList)
- {
- string ProjectID = node.SelectSingleNode("//ab:ProjectMain/ab:ProjectID", nsmgr).InnerText;
- }
RemoveNamespace后再去取似乎没什么效果:
- nsmgr.RemoveNamespace("ProjectMains", "http://someplace.org");
最后碰到这个再多一层的情况,其实用AddNamespace去取就行了:
- <Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <ProjectMains xmlns="http://someplace.org">
- <ProjectMain Action="added">
- <ProjectID>AQZNSJC</ProjectID>
- <ProjectName>testproject</ProjectName>
- <BeginDate>2012/6/1 0:00:00</BeginDate>
- <EndDate>2020/6/1 0:00:00</EndDate>
- <BuildBeginDate>2015/11/2 16:41:00</BuildBeginDate>
- <BgnSaleDate>2015/11/2 16:41:00</BgnSaleDate>
- <BuildEndDate>2015/11/2 16:41:00</BuildEndDate>
- <EndSaleDate>2015/11/2 16:41:00</EndSaleDate>
- <Principaler>pp</Principaler>
- <ProjStatus />
- <OwnerCompanyID>F</OwnerCompanyID>
- <CityID>320684</CityID>
- <LedgerID>1002</LedgerID>
- <InUsed>True</InUsed>
- </ProjectMain>
- </ProjectMains>
- </Project>
- <requestPubProfile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <requestInfo xmlns="http://someplace.org">
- <requestID>000001</requestID>
- <correlationID />
- <version>1</version>
- </requestInfo>
- </requestPubProfile>
- <batchType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <batchInfo xmlns="http://someplace.org">
- <dataName>ProjectInfo</dataName>
- <dataCount>1</dataCount>
- </batchInfo>
- </batchType>
或者实在不想处理这个前缀,那就直接取Tag吧:
- XmlNodeList projMainNodes = doc.GetElementsByTagName("ProjectMain");
- for (var i = ; i < projMainNodes.Count; i++)
- {
- XmlElement groupElement = (XmlElement)projMainNodes.Item(i);// 转化成节点
- var bus = groupElement.GetElementsByTagName("ProjectID").Count > ? groupElement.GetElementsByTagName("ProjectID")[].InnerText
: string.Empty;- }
或者替换掉:
- xml = xml.Replace("xmlns=", "xmlns:xsi=");
- doc.LoadXml("<load>" + xml + "</load>");
- XmlNodeList ProList = doc.SelectNodes("//ProjectMains");
C# xml读取操作的更多相关文章
- Qt XML读取写入操作
XML(eXtensible Markup Language,可扩展标记语言)是普通用于数据交换和数据存储的一种多用途文本文件格式: SVG(可标量矢量图形)XML格式,QtSvg模块提供了可用于载入 ...
- Xml通用操作类
using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml ...
- C# XML流操作简单实例
这里我们先介绍操作XML文件的两个对象:XmlTextReader和XmlTextWriter打开和读取Xml文件使用到的对象就是XmlTextReader对象.下面的例子打开了与程序在同一路径下的一 ...
- 我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!
我把我写的四种方法代码贴上来吧,照着写没啥问题. 注: <bookstore> <book> <Id>1</Id> <tate>2010-1 ...
- Python实现XML的操作
本文从以下两个方面, 用Python实现XML的操作: 一. minidom写入XML示例1 二. minidom写入XML示例2 三. ElementTree写入/修改示例 四. ElementTr ...
- C# XML文件操作
C# XML文件操作 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-09 参考 LINQ to XML System.Xml ...
- Android设备与外接U盘实现数据读取操作
现在越来越多手机支持OTG功能,通过OTG可以实现与外接入的U盘等USB设备实现数据传输.关于OTG,可以参考: http://blog.csdn.net/srw11/article/details/ ...
- VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式
[1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...
- sql server中对xml进行操作
一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...
随机推荐
- DNS解析过程详解【转】
转自:http://blog.chinaunix.net/uid-28216282-id-3757849.html 先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www. ...
- sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果
select [value] = stuff((select ','+modmb003 from modmb detail where modmb=18 for xml path('')), 1, ...
- springBoot 程序入口
入口类要放在首个package 这样它能扫到所有的包 @SpringBootApplication @EnableScheduling public class App { public static ...
- 移动端web如何让页面强制横屏
前段时间公司针对直播服务做了改版升级,APP客户端支持了横屏和竖屏推流/播放. 在这个背景下,虽然触屏未做改动,但本着敏而好学,不断探索的精神,针对如何让web页面强制横屏显示,做了一下试验研究. 首 ...
- ios开发某个页面横不过来屏幕的时候
某一个页面需要横屏,其他的页面任然保持竖屏需要以下关键的几个步骤: 1.修改系统代理方法的返回值 -(UIInterfaceOrientationMask)application:(UIApplica ...
- 洛谷 P1372 又是毕业季I[数论/神坑规律题]
题目描述 为了把毕业晚会办得更好,老师想要挑出默契程度最大的k个人参与毕业晚会彩排.可是如何挑呢?老师列出全班同学的号数1,2,……,n,并且相信k个人的默契程度便是他们的最大公约数(这不是迷信哦~) ...
- jvm 简单描述
java零基础入门-面向对象篇(一) 基础类型和引用类型 友情提示:本章开始可能会有部分较深入的内容,不说又不行,说了又很难解释清楚,因为里面的技术细节实在太多太复杂,所以我会屏蔽部分技术细节,只展示 ...
- Ruby on rails初体验(一)
接触ruby on rails 已经有一段时间了,想记录一下自己的rails历程.自己写一些小例子来帮助学习. Rails 适用于那些以数据为中心的应用,很多应用的核心部分包括一个数据库,这些引用的 ...
- 使用Git Gui从Bonobo服务器中克隆Repository(仓库)
刚开始在使用Git Gui从Bonobo服务器中克隆Repository(仓库)中遇到一些问题,如下图所示: 后来百度,有人遇到类似的问题,得到解决思路,请大家参考这里.大意说出现这个问题是因为要克隆 ...
- Storyboards Tutorial 03
这一节主要介绍segues,static table view cells 和 Add Player screen 以及 a game picker screen. Introducing Segue ...