|
1
2
3
4
5
6
|
using
System;
using
System.Collections.Generic;
using
System.Data;
using
System.IO;
using
System.Xml;
using
System.Xml.XPath;
|
|
1
2
3
4
5
6
7
8
|
public
class
XmlHelper
{
private
XPathNavigator nav;
private
XmlNode node;
private
XPathNodeIterator NodeIter;
protected
XmlDocument objXmlDoc =
new
XmlDocument();
private
string
strExpression;
protected
string
strXmlFile;
|
|
1
2
3
4
5
6
7
8
9
10
11
12
|
public
XmlHelper(
string
XmlFile)
{
try
{
this
.objXmlDoc.Load(XmlFile);
}
catch
(Exception ex)
{
throw
ex;
}
this
.strXmlFile = XmlFile;
}
|
|
1
2
3
4
5
6
7
8
9
10
|
public
void
Delete(
string
Node)
{
string
mainNode = Node.Substring(0, Node.LastIndexOf(
"/"
));
this
.objXmlDoc.SelectSingleNode(mainNode).RemoveChild(
this
.objXmlDoc.SelectSingleNode(Node));
}
public
void
DeleteChildren(
string
Node)
{
this
.objXmlDoc.SelectSingleNode(Node).RemoveAll();
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public
DataView GetData(
string
XmlPathNode)
{
DataSet ds =
new
DataSet();
this
.nav =
this
.objXmlDoc.CreateNavigator();
this
.nav =
this
.nav.SelectSingleNode(XmlPathNode);
if
(
this
.nav ==
null
)
{
throw
new
Exception(
"没有找到结点"
);
}
StringReader read =
new
StringReader(
this
.nav.get_OuterXml());
ds.ReadXml(read);
if
(ds.Tables.Count > 0)
{
return
ds.Tables[0].DefaultView;
}
return
null
;
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public
string
GetElementValue(
string
MainNode)
{
this
.nav =
this
.objXmlDoc.CreateNavigator();
this
.strExpression =
string
.Format(
"{0}"
, MainNode);
this
.nav =
this
.nav.SelectSingleNode(
this
.strExpression);
return
this
.nav.get_Value();
}
public
string
GetElementValue(
string
MainNode,
string
Element)
{
this
.nav =
this
.objXmlDoc.CreateNavigator();
this
.strExpression =
string
.Format(
"{0}/{1}"
, MainNode, Element);
this
.nav =
this
.nav.SelectSingleNode(
this
.strExpression);
return
this
.nav.get_Value();
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
string
GetNodeAttrValue(
string
MainNode,
string
Attr)
{
this
.nav =
this
.objXmlDoc.CreateNavigator();
this
.strExpression =
string
.Format(
"{0}@{1}"
, MainNode, Attr);
this
.nav.SelectSingleNode(
this
.strExpression);
return
this
.nav.get_Value();
}
public
List<
string
> GetSubNodes(
string
MainNode)
{
List<
string
> lst =
new
List<
string
>();
this
.nav =
this
.objXmlDoc.CreateNavigator();
this
.nav =
this
.nav.SelectSingleNode(MainNode);
this
.NodeIter =
this
.nav.SelectChildren(XPathNodeType.Element);
foreach
(XPathNavigator n
in
this
.NodeIter)
{
lst.Add(n.get_Value());
}
return
lst;
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public
void
InsertElement(
string
MainNode,
string
Element,
string
Content)
{
XmlNode objNode =
this
.objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement =
this
.objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
}
public
void
InsertElement(
string
MainNode,
string
Element,
string
Attrib,
string
AttribContent,
string
Content)
{
XmlNode objNode =
this
.objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement =
this
.objXmlDoc.CreateElement(Element);
objElement.SetAttribute(Attrib, AttribContent);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
}
public
void
InsertNode(
string
MainNode,
string
ChildNode,
string
Element,
string
Content)
{
XmlNode objRootNode =
this
.objXmlDoc.SelectSingleNode(MainNode);
XmlElement objChildNode =
this
.objXmlDoc.CreateElement(ChildNode);
objRootNode.AppendChild(objChildNode);
XmlElement objElement =
this
.objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objChildNode.AppendChild(objElement);
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public
bool
IsExists(
string
Node)
{
try
{
if
(
this
.objXmlDoc.SelectSingleNode(Node) ==
null
)
{
return
false
;
}
return
true
;
}
catch
(Exception)
{
return
false
;
}
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public
void
RemoveAll(
string
Node)
{
XmlNodeList xnl =
this
.objXmlDoc.SelectNodes(Node);
string
mainNode = Node.Substring(0, Node.LastIndexOf(
"/"
));
foreach
(XmlNode xn
in
xnl)
{
xn.RemoveAll();
}
}
public
void
Replace(
string
XmlPathNode,
string
Content)
{
this
.objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
}
public
void
Save()
{
try
{
this
.objXmlDoc.Save(
this
.strXmlFile);
}
catch
(Exception ex)
{
throw
ex;
}
this
.objXmlDoc =
null
;
}
}
}
|
本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2010/01/19/1651836.html
,如需转载请自行联系原作者