以下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. Android build code command

    make bootimage -j8 make systemimage -j8

  2. python-rtslib 模块

    Python library for configuring the Linux kernel-based multiprotocol SCSI target (LIO) A Python objec ...

  3. hdu 4989(水题)

    Summary Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  4. Codeforces Gym100814 I.Salem-异或 (ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (2015) Arab Academy for Science and Technology)

    这个题就是二进制,找两个数相应的二进制相对应的位置上数不同的最多的个数.异或写就可以. 一开始还想麻烦了,找出来最大的偶数和最大的奇数,最小的偶数和最小的奇数,但是这样想考虑的不全.因为范围比较小,直 ...

  5. Thinkphp3.2.3的主从分离事务问题(坑!!!)

    情景:使用Thinkphp3.2.3在项目开发中发现开启主从分离后,一旦事务体内,同时存在写入再读出,再写入这样的操作,TP在识别数据库的时候把读操作和写操作识别到了两个库..实际上希望事务开启后,所 ...

  6. Excel Sheet Column Title - LeetCode

    Given a positive integer, return its corresponding column title as appear in an Excel sheet. For exa ...

  7. 我眼中的AI

    !!!!本文禁止转载,引用,仅供观看 最初了解人工智能是在我上大二的时候,在看头条的时候经常看到有关人工智能的事情,当时的我和大多数的人一样,感觉人工智能很神奇.当时就整晚整晚的想人工智能会取代人类呀 ...

  8. composer update/require slow when enable XDebug in CLI environment

    Recently I find there will be some issue to use composer command, which seems too slow to finish. Af ...

  9. Linux 双网卡 不同网段 网络互通

    环境如下: 现状:一台linux主机上有两个网卡eth0 和eth1 ,机器能访问192网的服务资源,但不能访问10网段的资源. 要求:linux能通过eth1访问10网段的资源 路由: 网卡: 操作 ...

  10. maven setting.xml 配置(有效)

    <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...