以下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读取操作的更多相关文章

  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. 一张图让你学会Python【转】

    转自:http://blog.csdn.net/qq_30845505/article/details/51588423 有编程基础的人一看就可以了解 Python 的用法了.真正的 30 分钟上手. ...

  2. uva 1442:Cave(贪心)

    题意:一个洞穴长n,告诉你每个位置的地面高度和顶部高度,让你往里灌水,要求水不能碰到天花板(但可以无限接近).求最多的水量.(洞穴两边视为封闭) 思路:如果知道一个位置向左看最高可以多高,向右看最高可 ...

  3. hdu 2104(判断互素)

    hide handkerchief Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. Cryptography I 学习笔记 --- 基于陷门置换的公钥加密

    RSA算法的工作流程 1. 生成公钥私钥 生成两个素数p和q,计算n=p*q,计算φ(n)=n-p-q+1,然后生成e与d,使 e * d = 1 mod φ(n). 然后以(n, e)作为公钥,(n ...

  5. COCI2017/2018 CONTEST #7

    Prosjek 显然,越大的数应该越后参与平均数的计算,这样受较小数的影响就小一些 那我们就排个序,贪心的从最小的数开始往大的计算平均数即可 时间复杂度\(O(nlogn)\) Timovi 把分组分 ...

  6. NOIP2016模拟赛三 Problem C: 不虚就是要AK

    题目大意 给定一棵带有边权的树, 问你在树上随机选两个点, 它们最短路径上的边权之和为\(4\)的倍数的概率为多少. Solution 树分治. 没什么好讲的. #include <cstdio ...

  7. Factory Method 和AbstractFactory

    对应慕课视频的连接:https://www.imooc.com/video/5316 1,工厂模式的应用场景 有一组类似的对象需要被创建 在编码时不能预见需要被创建哪种类的实例 在系统需要考虑扩展性的 ...

  8. 爬虫:网页里元素的xpath结构,scrapy不一定就找的到

    这种情况原因是html界面关联的js文件可能会动态修改DOM结构,这样浏览器完成了动态修改DOM,在 浏览器上看到的DOM结构,就和后台抓到的DOM结构不通 举例:新浪微博发的微博,在浏览器通过fir ...

  9. 计算机网络自顶向下第三章传输层二TCP

    TCP 全双工 A-B,B-A 点对点 一对一的 TCP连接建立过程 客户首先发送一个特殊的TCP报文段,服务器用另一个特殊的TCP报文段来相应,最后,客户再用第三个特殊的报文段作为相应,前两个报文段 ...

  10. 126. Word Ladder II(hard)

    126. Word Ladder II 题目 Given two words (beginWord and endWord), and a dictionary's word list, find a ...