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
}
XML工具类
最新推荐文章于 2023-04-10 14:35:57 发布
1121

被折叠的 条评论
为什么被折叠?



