以下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");

最新文章

  1. WCF局域网内使用代理无法访问解决方法
  2. java中的对象,类。与 方法的重载。
  3. canvas 拖拽实现
  4. &lt;html&gt;中的action
  5. yii2-更改默认显示的通用主页
  6. ALTER SEQUENCE 修改序列解决唯一约束冲突 unique constraint violated
  7. (一)线性回归与特征归一化(feature scaling)
  8. View绘制详解(四),谝一谝layout过程
  9. Win32 CreateWindow GdiPlus
  10. XE5 开发android平台搭建
  11. php字符串递增
  12. 指令创建 Express Node.js 项目
  13. c++并发编程之条件变量(Condition Variable)
  14. iOS 网易彩票-1框架搭建
  15. 类的专有方法(__getattr__和__setattr__、__delattr__)
  16. 数据采集与分析的那些事——从数据埋点到AB测试
  17. 大数据学习---大数据的学习【all】
  18. ruby 字符串加密
  19. [BZOJ4824][Cqoi2017]老C的键盘 树形dp+组合数
  20. 使用C#实现计划任务(corn job)

热门文章

  1. spingboot 邮件模板发送;
  2. C#根据反射和特性实现ORM映射实例分析
  3. idea 快速生成代码的快捷键
  4. 牛客网 牛客小白月赛2 D.虚虚实实-无向图判欧拉路径
  5. xamarin.ios 本地通知推送
  6. mac使用xampp中自带phpmyadmin连接单独安装mysql
  7. CHM Navigation to the webpage was canceled 解决办法
  8. 剑指Offer面试题51(Java版):数组中反复的数字
  9. Java内存区域与模拟内存区域异常
  10. AutoCAD如何输入文字