以下xml:

  1. <Project>
  2. <ProjectMains>
  3. <ProjectMain Action="added">
  4. <ProjectID>AQZNSJC</ProjectID>
  5. <ProjectName>testproject</ProjectName>
  6. <BeginDate>2012/6/1 0:00:00</BeginDate>
  7. <EndDate>2020/6/1 0:00:00</EndDate>
  8. <LedgerID>1002</LedgerID>
  9. <InUsed>True</InUsed>
  10. </ProjectMain>
  11. </ProjectMains>
  12. </Project>

不带namespace的读取,直接用XPath方式即可:

  1. XmlDocument doc = new XmlDocument();
  2. var xml = TextBox1.Text.Trim();
  3. doc.LoadXml("<load>" + xml + "</load>");
  4. XmlNodeList ProList = doc.SelectNodes("//ProjectMains");
  5. foreach (XmlNode node in ProList)
  6. {
  7. string ProjectID = node.SelectSingleNode("./ProjectMain/ProjectID").InnerText;
  8. }
  1. 换成这样的<ProjectMains xmlns="http://someplace.org">,直接XPath方式就不行了,要AddNamespace后再带前缀去取:
  1.        XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
  2. nsmgr.AddNamespace("ab", "http://someplace.org");
  3. XmlNodeList ProList = doc.SelectNodes("//ab:ProjectMains",nsmgr);
  4. foreach (XmlNode node in ProList)
  5. {
  6. string ProjectID = node.SelectSingleNode("//ab:ProjectMain/ab:ProjectID", nsmgr).InnerText;
  7. }

RemoveNamespace后再去取似乎没什么效果:

  1. nsmgr.RemoveNamespace("ProjectMains", "http://someplace.org");

最后碰到这个再多一层的情况,其实用AddNamespace去取就行了:

  1. <Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  2. <ProjectMains xmlns="http://someplace.org">
  3. <ProjectMain Action="added">
  4. <ProjectID>AQZNSJC</ProjectID>
  5. <ProjectName>testproject</ProjectName>
  6. <BeginDate>2012/6/1 0:00:00</BeginDate>
  7. <EndDate>2020/6/1 0:00:00</EndDate>
  8. <BuildBeginDate>2015/11/2 16:41:00</BuildBeginDate>
  9. <BgnSaleDate>2015/11/2 16:41:00</BgnSaleDate>
  10. <BuildEndDate>2015/11/2 16:41:00</BuildEndDate>
  11. <EndSaleDate>2015/11/2 16:41:00</EndSaleDate>
  12. <Principaler>pp</Principaler>
  13. <ProjStatus />
  14. <OwnerCompanyID>F</OwnerCompanyID>
  15. <CityID>320684</CityID>
  16. <LedgerID>1002</LedgerID>
  17. <InUsed>True</InUsed>
  18. </ProjectMain>
  19. </ProjectMains>
  20. </Project>
  21. <requestPubProfile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  22. <requestInfo xmlns="http://someplace.org">
  23. <requestID>000001</requestID>
  24. <correlationID />
  25. <version>1</version>
  26. </requestInfo>
  27. </requestPubProfile>
  28. <batchType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  29. <batchInfo xmlns="http://someplace.org">
  30. <dataName>ProjectInfo</dataName>
  31. <dataCount>1</dataCount>
  32. </batchInfo>
  33. </batchType>

或者实在不想处理这个前缀,那就直接取Tag吧:

  1. XmlNodeList projMainNodes = doc.GetElementsByTagName("ProjectMain");
  2. for (var i = ; i < projMainNodes.Count; i++)
  3. {
  4. XmlElement groupElement = (XmlElement)projMainNodes.Item(i);// 转化成节点
  5. var bus = groupElement.GetElementsByTagName("ProjectID").Count > ? groupElement.GetElementsByTagName("ProjectID")[].InnerText
                                             : string.Empty;
  6. }

或者替换掉:

  1. xml = xml.Replace("xmlns=", "xmlns:xsi=");
  2. doc.LoadXml("<load>" + xml + "</load>");
  3. XmlNodeList ProList = doc.SelectNodes("//ProjectMains");

C# xml读取操作的更多相关文章

  1. Qt XML读取写入操作

    XML(eXtensible Markup Language,可扩展标记语言)是普通用于数据交换和数据存储的一种多用途文本文件格式: SVG(可标量矢量图形)XML格式,QtSvg模块提供了可用于载入 ...

  2. Xml通用操作类

    using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml ...

  3. C# XML流操作简单实例

    这里我们先介绍操作XML文件的两个对象:XmlTextReader和XmlTextWriter打开和读取Xml文件使用到的对象就是XmlTextReader对象.下面的例子打开了与程序在同一路径下的一 ...

  4. 我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!

    我把我写的四种方法代码贴上来吧,照着写没啥问题. 注: <bookstore> <book> <Id>1</Id> <tate>2010-1 ...

  5. Python实现XML的操作

    本文从以下两个方面, 用Python实现XML的操作: 一. minidom写入XML示例1 二. minidom写入XML示例2 三. ElementTree写入/修改示例 四. ElementTr ...

  6. C# XML文件操作

    C# XML文件操作 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-09 参考 LINQ to XML System.Xml ...

  7. Android设备与外接U盘实现数据读取操作

    现在越来越多手机支持OTG功能,通过OTG可以实现与外接入的U盘等USB设备实现数据传输.关于OTG,可以参考: http://blog.csdn.net/srw11/article/details/ ...

  8. VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式

    [1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...

  9. sql server中对xml进行操作

    一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...

随机推荐

  1. DNS解析过程详解【转】

    转自:http://blog.chinaunix.net/uid-28216282-id-3757849.html 先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www. ...

  2. sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果

    select  [value] = stuff((select ','+modmb003  from modmb detail where modmb=18 for xml path('')), 1, ...

  3. springBoot 程序入口

    入口类要放在首个package 这样它能扫到所有的包 @SpringBootApplication @EnableScheduling public class App { public static ...

  4. 移动端web如何让页面强制横屏

    前段时间公司针对直播服务做了改版升级,APP客户端支持了横屏和竖屏推流/播放. 在这个背景下,虽然触屏未做改动,但本着敏而好学,不断探索的精神,针对如何让web页面强制横屏显示,做了一下试验研究. 首 ...

  5. ios开发某个页面横不过来屏幕的时候

    某一个页面需要横屏,其他的页面任然保持竖屏需要以下关键的几个步骤: 1.修改系统代理方法的返回值 -(UIInterfaceOrientationMask)application:(UIApplica ...

  6. 洛谷 P1372 又是毕业季I[数论/神坑规律题]

    题目描述 为了把毕业晚会办得更好,老师想要挑出默契程度最大的k个人参与毕业晚会彩排.可是如何挑呢?老师列出全班同学的号数1,2,……,n,并且相信k个人的默契程度便是他们的最大公约数(这不是迷信哦~) ...

  7. jvm 简单描述

    java零基础入门-面向对象篇(一) 基础类型和引用类型 友情提示:本章开始可能会有部分较深入的内容,不说又不行,说了又很难解释清楚,因为里面的技术细节实在太多太复杂,所以我会屏蔽部分技术细节,只展示 ...

  8. Ruby on rails初体验(一)

    接触ruby on rails 已经有一段时间了,想记录一下自己的rails历程.自己写一些小例子来帮助学习.  Rails 适用于那些以数据为中心的应用,很多应用的核心部分包括一个数据库,这些引用的 ...

  9. 使用Git Gui从Bonobo服务器中克隆Repository(仓库)

    刚开始在使用Git Gui从Bonobo服务器中克隆Repository(仓库)中遇到一些问题,如下图所示: 后来百度,有人遇到类似的问题,得到解决思路,请大家参考这里.大意说出现这个问题是因为要克隆 ...

  10. Storyboards Tutorial 03

    这一节主要介绍segues,static table view cells 和 Add Player screen 以及 a game picker screen. Introducing Segue ...