XML工具类

using System; using System.Collections; using System.IO; using System.Text; using System.Xml; namespace OA.SystemFramework { /// <summary> /// XML工具. /// </summary> public class XmlToolkit { /// <summary> /// 读取XML节. /// </summary> /// 文件名. /// 文件路径. /// <returns>XML字符串.</returns> public static string ReadFregment( string file, string path ) { string LastElement = Path.GetFileName( path ); ArrayList list = new ArrayList(); XmlTextReader reader = new XmlTextReader( file ); while( reader.Read() ) { bool needRemove = false; if( reader.NodeType == XmlNodeType.Element ) { list.Add( reader.Name ); if( reader.IsEmptyElement ) { needRemove = true; } } else if( reader.NodeType == XmlNodeType.EndElement ) { needRemove = true; } #if DEBUG Console.WriteLine( "XmlToolkit:遍历Path:" + Toolkit.Array2String( list, "\\" ) ); #endif if( reader.Name == LastElement ) { string currentPath = Toolkit.Array2String( list, "\\" ); #if DEBUG Console.WriteLine( "XmlToolkit:比较Path:" + currentPath ); #endif if( currentPath == path + "\\" ) { string fregment = reader.ReadOuterXml(); #if DEBUG Console.WriteLine( "节点值:" + fregment ); #endif reader.Close(); return fregment; } } if( needRemove ) { list.RemoveAt( list.Count - 1 ); } } reader.Close(); return ""; } /// <summary> /// 创建 /// </summary> /// XML节. /// <returns>XML读取器.</returns> public static XmlTextReader CreateReader( string fregment ) { XmlParserContext context = new XmlParserContext( null, null, null, XmlSpace.None ); context.Encoding = Encoding.GetEncoding( "gb2312" ); return new XmlTextReader( fregment, XmlNodeType.Element, context ); } /// <summary> /// 读取XML文件. /// </summary> /// XML文件名. /// 文件路径. /// 属性名. public static string Read( string xmlFile, string path, string attr ) { string cdFregment = XmlToolkit.ReadFregment( xmlFile, path ); XmlTextReader reader = XmlToolkit.CreateReader( cdFregment ); string _value = null; while( reader.Read() ) { if( reader.NodeType == XmlNodeType.Element && reader.Name == Path.GetFileName( path ) ) { _value = reader.GetAttribute( attr ); break; } } reader.Close(); return _value; } } //class XmlToolkit }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值