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 ...
随机推荐
- 了解Binder机制原理和底层实现
参考:http://www.2cto.com/kf/201606/515548.html 1.Binder通信机制介绍 这篇文章会先对比Binder机制与Linux的通信机制的差别,了解为什么Andr ...
- JSON Web Token的使用
定义 JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 适用场景 1.用于向Web应用传递一些非敏感信息.例如完成加好友.下 ...
- Codeforces 158 B. Taxi[贪心/模拟/一辆车最多可以坐4人同一个群的小朋友必须坐同一辆车问最少需要多少辆车]
http://codeforces.com/problemset/problem/158/B B. Taxi time limit per test 3 seconds memory limit pe ...
- 使用企业微信的API给指定用户发送消息
上个月比较忙,等不忙了继续写点基础教程(五一还在高铁上写项目在).因为公司的原因,自己学习了点JavaWeb的知识,重新写了一个简单的后台管理,用于记录用户注册信息的.其中有这样的一个要求,就是在用户 ...
- Unix/Linux提权漏洞快速检测工具unix-privesc-check
Unix/Linux提权漏洞快速检测工具unix-privesc-check unix-privesc-check是Kali Linux自带的一款提权漏洞检测工具.它是一个Shell文件,可以检测 ...
- Delphi中@,^,#,$分别表示什么?
@:取址运算符; var int:integer; p:^integer; new(P); int:=24; p:=@int; dispose(P); ^:指针的引用解析操作符; var pint:^ ...
- Excel找出两列相同部分
公式:=IF(COUNTIF($B$2:$B$1036,A6)>0,A2,"") 含义:从B列第2行到b列1036行中和A列第6个相等的返回A6的值,不相等返回空 用法:新建 ...
- Android JNI&NDK编程小结及建议
前言 由于网上关于JNI/NDK相关的知识点介绍的比较零散而且不具备参照性,所以写了这篇JNI/NDK笔记,便于作为随时查阅的工具类型的文章,本文主要的介绍了在平时项目中常用的命令.JNI数据类型.签 ...
- Android 两种注册、发送广播的区别
前言:前面文章记录了Service的使用,这次来记录另一个四个组件之一的BroadcastReceiver.主要介绍两种发送和注册广播的区别. BroadcastReceiver广播接收者用于接收系统 ...
- Android requestLayout 和 invalidata , postInvalidate 比较
Android 中的View更新方法 invalidate 在UI线程中使用. postInvalidate 在非UI线程中通知重绘. View 确定自身已经不适合现有区域时,调用requestLay ...