1.xml在NET的程序里如果使用XmlDocument的方式构建,那么就是一棵类树。在这棵树里,所有的Xml文件的节点都被表示成类。但这些类有根据不同的XML的节点类型来表示不同的类。比如:XMLElement,XmlAttribute等等,而他们共同的抽象类是XMLNODE。他们是如下关系XmlElement : XmlLinkedNode : XmlNode。
2.读取XML文件中某节点的值,并修改它,XML如下:
<?xml version="1.0" encoding="utf-8"?>
<users>
<newTab>
<newName>BeiJing</newName>
<newCode>ShangHai</newCode>
<newUp>TianJin</newUp>
</newTab>
</users>
<?xml version="1.0" encoding="utf-8"?>
<users>
<newTab>
<newName>BeiJing</newName>
<newCode>ShangHai</newCode>
<newUp>TianJin</newUp>
</newTab>
</users>
代码如下
XmlDocument doc = new XmlDocument();
doc.Load("your.xml");
doc.Load("your.xml");
XmlNode node;
XmlElement root = doc.DocumentElement;
node = root.SelectSingleNode("users/newTab/newName");
node.Value = "newvalue";
doc.save()
XmlElement root = doc.DocumentElement;
node = root.SelectSingleNode("users/newTab/newName");
node.Value = "newvalue";
doc.save()
或者如下
string filePath = HttpContext.Current.Server.MapPath("your.xml");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filePath);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filePath);
//取值
string xp = xmlDoc.SelectSingleNode("newTab").ChildNodes[0].InnerTex;
string xp = xmlDoc.SelectSingleNode("newTab").ChildNodes[0].InnerTex;
//给值
xmlDoc.SelectSingleNode("newTab").ChildNodes[0].InnerTex = "asdasd";
xmlDoc.Save(filePath);
xmlDoc.SelectSingleNode("newTab").ChildNodes[0].InnerTex = "asdasd";
xmlDoc.Save(filePath);
3.关于xml中的AppendChild
System.Xml.XmlDocument UserInfo = new XmlDocument();
UserInfo.LoadXml("<User></User>");
XmlNode node = UserInfo.LastChild;
XmlElement elem = UserInfo.CreateElement("pass");
elem.InnerText = "Pa";
XmlNode node1 = UserInfo.CreateNode(XmlNodeType.Element, "111", "");
XmlNode node2 = UserInfo.CreateNode(XmlNodeType.Element, "222", "");
XmlNode node3 = UserInfo.CreateNode(XmlNodeType.Element, "333", "");
node.AppendChild(node1);
node.AppendChild(node2);
node.AppendChild(node3);
foreach (XmlNode Node in node)
Node.AppendChild(elem);
UserInfo.LoadXml("<User></User>");
XmlNode node = UserInfo.LastChild;
XmlElement elem = UserInfo.CreateElement("pass");
elem.InnerText = "Pa";
XmlNode node1 = UserInfo.CreateNode(XmlNodeType.Element, "111", "");
XmlNode node2 = UserInfo.CreateNode(XmlNodeType.Element, "222", "");
XmlNode node3 = UserInfo.CreateNode(XmlNodeType.Element, "333", "");
node.AppendChild(node1);
node.AppendChild(node2);
node.AppendChild(node3);
foreach (XmlNode Node in node)
Node.AppendChild(elem);
UserInfo.Save(Server.MapPath("1.xml"));
得到如下:
<?xml version="1.0"?>
<User>
<111>
<pass>Pa</pass>
</111>
<222>
<pass>Pa</pass>
</222>
<333>
<pass>Pa</pass>
</333>
</User>
<User>
<111>
<pass>Pa</pass>
</111>
<222>
<pass>Pa</pass>
</222>
<333>
<pass>Pa</pass>
</333>
</User>
4.修改结点名字
<Root>
<a>
<c/>
</a>
</Root>
改成
<Root>
<b>
<c/>
<b>
</Root>
就是把a换成b,但下面子结点内容不变。代码如下:
<a>
<c/>
</a>
</Root>
改成
<Root>
<b>
<c/>
<b>
</Root>
就是把a换成b,但下面子结点内容不变。代码如下:
先用selectNode或别的方式找到a节点 node
XmlNode nodeTemp = doc.CreateNode( node.NodeType , "b" , "");
nodeTemp.InnerXml = node.InnerXml;
element.ReplaceChild( nodeTemp , node );
XmlNode nodeTemp = doc.CreateNode( node.NodeType , "b" , "");
nodeTemp.InnerXml = node.InnerXml;
element.ReplaceChild( nodeTemp , node );