志在指尖
用双手敲打未来

XML增加、删去、修改、查询 节点协助类

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Xml;
usingSystem.Collections;
namespaceCommandXML
{
publicclasscmdXML
{
///<summary>
///创建XML文件
///</summary>
///<paramname=”xmlFilePath”>存放目录</param>
///<paramname=”rootNodename”>根节点名字</param>
publicvoidCreateXMLDoc(stringxmlFilePath,stringrootNodename)
{
//初始化一个xml实例
XmlDocumentmyXmlDoc=newXmlDocument();
//<?xmlversion=”1.0″encoding=”UTF-8″?>
myXmlDoc.AppendChild(myXmlDoc.CreateXmlDeclaration(“1.0″,”UTF-8″,null));
//创建xml的根节点
XmlElementrootElement=myXmlDoc.CreateElement(rootNodename);
//将根节点加入到xml文件中(AppendChild)
myXmlDoc.AppendChild(rootElement);
myXmlDoc.Save(xmlFilePath);
}
///<summary>
///增加第一层的节点
///</summary>
///<paramname=”xmlFilePath”>文件路径</param>
///<paramname=”RootPath”>根节点名字</param>
///<paramname=”Name”>所要添加第一层节点的节点名</param>
///<paramname=”attribute”></param>
publicvoidAddXmlFirstNode(stringxmlFilePath,stringRootPath,stringName,string[,]attribute)c#
{
try
{
XmlDocumentmyXmlDoc=newXmlDocument();
myXmlDoc.Load(xmlFilePath);
XmlNodememberlist=myXmlDoc.SelectSingleNode(RootPath);
//XmlNodeListnodelist=memberlist.ChildNodes;
XmlElementfirstLevelElement1=myXmlDoc.CreateElement(Name);
//填充第一层的第一个子节点的属性值(SetAttribute)
for(inti=0;i<attribute.GetLength(0);i++)
{
firstLevelElement1.SetAttribute(attribute[i,0],attribute[i,1]);
}
//将第一层的第一个子节点加入到根节点下
memberlist.AppendChild(firstLevelElement1);
//保存更改
myXmlDoc.Save(xmlFilePath);
}
catch(Exceptionex)
{
Console.WriteLine(ex.ToString());
}
}
///<summary>
///增加第二层节点
///</summary>
///<paramname=”xmlFilePath”>路径</param>
///<paramname=”RootPath”>根节点名</param>
///<paramname=”FirstElementattributesName”>第一层节点属性名</param>
///<paramname=”Firstattributes”>第一层节点属性名对应的值</param>
///<paramname=”SecondElement”>所要增加的第二层节点名</param>
///<paramname=”SecondinnerText”>第二层节点对应的存储内容</param>
publicvoidAddXmlSecondNod(stringxmlFilePath,stringRootPath,stringFirstElementattributesName,stringFirstattributes,string[]SecondElement,string[]SecondinnerText)
{
try
{
XmlDocumentmyXmlDoc=newXmlDocument();
myXmlDoc.Load(xmlFilePath);
XmlNodememberlist=myXmlDoc.SelectSingleNode(RootPath);
XmlNodeListnodelist=memberlist.ChildNodes;
//添加一个带有属性的节点信息
foreach(XmlNodenodeinnodelist)
{
if(node.Attributes[FirstElementattributesName].Value.Equals(Firstattributes))
{
for(inti=0;i<SecondElement.Length;i++)
{
XmlElementnewElement=myXmlDoc.CreateElement(SecondElement[i]);
newElement.InnerText=SecondinnerText[i];
node.AppendChild(newElement);
}
}
}
//保存更改
myXmlDoc.Save(xmlFilePath);
}
catch(Exceptionex)
{
Console.WriteLine(ex.ToString());
}
}
///<summary>
///获取第一层节点的属性值,返回所有的属性名和对应的值
///</summary>
///<paramname=”xmlFilePath”>文件路径</param>
///<paramname=”RootPath”>根节点名</param>
///<paramname=”firstNodeName”>第一层节点名</param>
///<returns></returns>
publicArrayListGetXMLFirstNodeAttributes(stringxmlFilePath,stringRootPath,stringfirstNodeName)
{
ArrayListlist=newArrayList();
try
{
//初始化一个xml实例
XmlDocumentmyXmlDoc=newXmlDocument();
//加载xml文件(参数为xml文件的路径)
myXmlDoc.Load(xmlFilePath);
//获得第一个姓名匹配的节点(SelectSingleNode):此xml文件的根节点
XmlNoderootNode=myXmlDoc.SelectSingleNode(RootPath);
//分别获得该节点的InnerXml和OuterXml信息
stringinnerXmlInfo=rootNode.InnerXml.ToString();
stringouterXmlInfo=rootNode.OuterXml.ToString();
//获得该节点的子节点(即:该节点的第一层子节点)
XmlNodeListfirstLevelNodeList=rootNode.ChildNodes;
foreach(XmlNodenodeinfirstLevelNodeList)
{
//获得该节点的属性集合
if(node.Name==firstNodeName)
{
XmlAttributeCollectionattributeCol=node.Attributes;
foreach(XmlAttributeattriinattributeCol)
{
//获取属性名称与属性值
stringname=attri.Name;
stringvalue=attri.Value;
list.Add(name+”:”+value);
}
}
}
}
catch(Exceptionex)
{
Console.WriteLine(ex.ToString());
}
returnlist;
}
///<summary>
///获取第二层节点的存储值
///</summary>
///<paramname=”xmlFilePath”>文件路径</param>
///<paramname=”RootPath”>根节点</param>
///<paramname=”firstNodeName”>第一层节点名</param>
///<paramname=”secondNoadeName”>第二层节点名</param>
///<returns></returns>
publicArrayListGetXMLSecondNodeValue(stringxmlFilePath,stringRootPath,stringfirstNodeName,stringsecondNoadeName)
{
ArrayListlist=newArrayList();
try
{
//初始化一个xml实例
XmlDocumentmyXmlDoc=newXmlDocument();
//加载xml文件(参数为xml文件的路径)
myXmlDoc.Load(xmlFilePath);
//获得第一个姓名匹配的节点(SelectSingleNode):此xml文件的根节点
XmlNoderootNode=myXmlDoc.SelectSingleNode(RootPath);
//分别获得该节点的InnerXml和OuterXml信息
stringinnerXmlInfo=rootNode.InnerXml.ToString();
stringouterXmlInfo=rootNode.OuterXml.ToString();
//获得该节点的子节点(即:该节点的第一层子节点)
XmlNodeListfirstLevelNodeList=rootNode.ChildNodes;
foreach(XmlNodenodeinfirstLevelNodeList)
{
//获得该节点的属性集合
if(node.Name==firstNodeName)
{
foreach(XmlNode_nodeinnode.ChildNodes)
{
if(_node.Name==secondNoadeName)
list.Add(_node.InnerText);
}
}
//判断此节点是否还有子节点
if(node.HasChildNodes)
{
//获取该节点的第一个子节点
XmlNodesecondLevelNode1=node.FirstChild;
//获取该节点的名字
stringname=secondLevelNode1.Name;
//获取该节点的值(即:InnerText)
stringinnerText=secondLevelNode1.InnerText;
Console.WriteLine(“{0}={1}”,name,innerText);
//获取该节点的第二个子节点(用数组下标获取)
XmlNodesecondLevelNode2=node.ChildNodes[1];
name=secondLevelNode2.Name;
innerText=secondLevelNode2.InnerText;
Console.WriteLine(“{0}={1}”,name,innerText);
}
}
}
catch(Exceptionex)
{
Console.WriteLine(ex.ToString());
}
returnlist;
}
///<summary>
///修改第一层节点的属性值
///</summary>
///<paramname=”xmlFilePath”>文件路径</param>
///<paramname=”RootPath”>根节点名</param>
///<paramname=”FirstNodeName”>第一节点名</param>
///<paramname=”FirstNodeAttributes”>第一节点属性名</param>
///<paramname=”FirstNodeAttributesOldValue”>第一节点属性值</param>
///<paramname=”newValue”></param>
publicvoidModifyXmlFirstattribute(stringxmlFilePath,stringRootPath,stringFirstNodeName,stringFirstNodeAttributes,stringFirstNodeAttributesOldValue,stringnewValue)
{
try
{
XmlDocumentmyXmlDoc=newXmlDocument();
myXmlDoc.Load(xmlFilePath);
//XmlNoderootNode=myXmlDoc.FirstChild;
//XmlNodeListfirstLevelNodeList=rootNode.ChildNodes;
XmlNoderootNode=myXmlDoc.SelectSingleNode(RootPath);
foreach(XmlNodenodeinrootNode.ChildNodes)
{
if(node.Name.Equals(FirstNodeName))
{
//修改此节点的属性值
if(node.Attributes[FirstNodeAttributes].Value.Equals(FirstNodeAttributesOldValue))
{
node.Attributes[FirstNodeAttributes].Value=newValue;
}
}
}
//要想使对xml文件所做的修改生效,必须执行以下Save方法
myXmlDoc.Save(xmlFilePath);
}
catch(Exceptionex)
{
Console.WriteLine(ex.ToString());
}
}
///<summary>
///修改第二节点的存储值
///</summary>
///<paramname=”xmlFilePath”>文件路径</param>
///<paramname=”RootPath”>根节点名字</param>
///<paramname=”FirstNodeName”>第一节点名字</param>
///<paramname=”FirstNodeAttributes”>第一节点属性名</param>
///<paramname=”FirstNodeAttributesValue”>第一节点属性值</param>
///<paramname=”SecondNodeName”>第二节点名字</param>
///<paramname=”value”>第二节点存储值</param>
publicvoidModifyXmlElementValue(stringxmlFilePath,stringRootPath,stringFirstNodeName,stringFirstNodeAttributes,stringFirstNodeAttributesValue,stringSecondNodeName,stringvalue)
{
try
{
XmlDocumentmyXmlDoc=newXmlDocument();
myXmlDoc.Load(xmlFilePath);
XmlNoderootNode=myXmlDoc.SelectSingleNode(RootPath);
foreach(XmlNodenodeinrootNode.ChildNodes)
{
if(node.Name.Equals(FirstNodeName))
{
//修改此节点的属性值
if(node.Attributes[FirstNodeAttributes].Value.Equals(FirstNodeAttributesValue))
{
foreach(XmlNode_nodeinnode.ChildNodes)
{
if(_node.Name==SecondNodeName)
{
_node.InnerText=value;
}
}
}
}
}
//要想使对xml文件所做的修改生效,必须执行以下Save方法
myXmlDoc.Save(xmlFilePath);
}
catch(Exceptionex)
{
Console.WriteLine(ex.ToString());
}
}
///<summary>
///删除第一节点
///</summary>
///<paramname=”xmlFilePath”>路径</param>
///<paramname=”RootPath”>根节点</param>
///<paramname=”FirstNodeName”>第一节点名</param>
///<paramname=”FirstNodeAttributes”>第一节点属性名</param>
///<paramname=”FirstNodeAttributesValue”>第一节点属性值</param>
publicvoidDeleteXmlFirstnode(stringxmlFilePath,stringRootPath,stringFirstNodeName,stringFirstNodeAttributes,stringFirstNodeAttributesValue)
{
try
{
XmlDocumentmyXmlDoc=newXmlDocument();
myXmlDoc.Load(xmlFilePath);
XmlNoderootNode=myXmlDoc.SelectSingleNode(RootPath);
foreach(XmlNodenodeinrootNode.ChildNodes)
{
if(node.Name.Equals(FirstNodeName))
{
if(node.Attributes[FirstNodeAttributes].Value.Equals(FirstNodeAttributesValue))
{
//node.RemoveAll();
rootNode.RemoveChild(node);
}
}
}
//保存对xml文件所做的修改
myXmlDoc.Save(xmlFilePath);
}
catch(Exceptionex)
{
Console.WriteLine(ex.ToString());
}
}
///<summary>
///删除子节点
///</summary>
///<paramname=”xmlFilePath”>路径</param>
///<paramname=”FirstElementattributesName”>第一节点属性名</param>
///<paramname=”Firstattributes”>第一节点属性值</param>
///<paramname=”secondnodeName”>子节点名称</param>
publicvoidDeleteXmlsecondNode(stringxmlFilePath,stringRootPath,stringFirstNodeName,stringFirstNodeAttributes,stringFirstNodeAttributesValue,stringsecondnodeName)
{
try
{
XmlDocumentmyXmlDoc=newXmlDocument();
myXmlDoc.Load(xmlFilePath);
XmlNoderootNode=myXmlDoc.SelectSingleNode(RootPath);
foreach(XmlNodenodeinrootNode.ChildNodes)
{
if(node.Name.Equals(FirstNodeName))
{
if(node.Attributes[FirstNodeAttributes].Value.Equals(FirstNodeAttributesValue))
{
foreach(XmlNode_nodeinnode.ChildNodes)
{
if(_node.Name==secondnodeName)
//_node.RemoveAll();
node.RemoveChild(_node);
}
}
}
}
//保存对xml文件所做的修改
myXmlDoc.Save(xmlFilePath);
}
catch(Exceptionex)
{
Console.WriteLine(ex.ToString());
}
}
}
}

未经允许不得转载:IT技术网站 » XML增加、删去、修改、查询 节点协助类
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载