20分悬赏--VC2003中怎么动态的给xml添加子节点

20分悬赏--VC2003中怎么动态的给xml添加子节点,第1张

XmlNode parentNode = myDocSelectSingleNode("NaviMenu");
XmlElement xe = myDocCreateElement("MenuItem");
XmlElement tx = myDocCreateElement("Text");
txInnerText = "xxx";
xeAppendChild(tx);
XmlElement url = myDocCreateElement("URL");
urlInnerText = "yyy";
xeAppendChild(url);
parentNodeAppendChild(xe);

from xmletree import ElementTree
filePath = 'd:\\aaaxml'
xmldoc = ElementTreeparse(filePath)
node = xmldocfind('/string')
nodetext = "win 7"
其实说实话,楼上的回答已经很清楚了
不管什么编程语言,要想学好,基础一定要扎实

这是以前自己做过的一个测试。楼主可以参考一下。
=======================bookstoreXML内容====================
<xml version="10" encoding="gb2312">
<bookstore>
<book>
</book>
<book>
</book>
<book genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>583</price>
</book>
<book genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>583</price>
</book>
</bookstore>
=======================读取========================
XmlDocument doc = new XmlDocument();
docLoad(@"d:\bookstorexml");
XmlElement root = docDocumentElement;
MessageBoxShow(rootSelectNodes("book")[0]InnerText);
=======================添加=========================
XmlDocument xmlDoc = new XmlDocument();
xmlDocLoad(@"d:\bookstorexml");
XmlNode root = xmlDocSelectSingleNode("bookstore");//查找<bookstore>
XmlElement xe1 = xmlDocCreateElement("book");//创建一个<book>节点
xe1SetAttribute("genre", "李赞红");//设置该节点的genre属性
xe1SetAttribute("ISBN", "2-3631-4");//设置该节点的ISBN属性
XmlElement xesub1 = xmlDocCreateElement("title");//添加一个名字为title的子节点
xesub1InnerText = "CS从入门到精通";//设置文本
xe1AppendChild(xesub1);//把title添加到<book>节点中
XmlElement xesub2 = xmlDocCreateElement("author");
xesub2InnerText = "候捷";
xe1AppendChild(xesub2);
XmlElement xesub3 = xmlDocCreateElement("price");
xesub3InnerText = "583";
xe1AppendChild(xesub3);
rootAppendChild(xe1);//把book添加到<bookstore>根节点中
xmlDocSave(@"d:\bookstorexml");
======================修改========================
XmlDocument xmlDoc = new XmlDocument();
xmlDocLoad(@"d:\bookstorexml");
XmlNodeList nodeList = xmlDocSelectSingleNode("bookstore")ChildNodes;//获取bookstore节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有名字为bookstore的子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xeGetAttribute("genre") == "李赞红")//如果genre属性值为“李赞红”
{
xeSetAttribute("genre", "update李赞红");//则修改该属性为“update李赞红”
XmlNodeList nls = xeChildNodes;//继续获取xe(xn)子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2Name == "author")//如果找到
{
xe2InnerText = "亚胜";//则修改
break;//找到退出来
}
}
break;
}
}
xmlDocSave(@"d:\bookstorexml");//保存。
========================删除=========================
XmlDocument xmlDoc = new XmlDocument();
xmlDocLoad(@"d:\bookstorexml");
XmlNodeList xnl = xmlDocSelectSingleNode("bookstore")ChildNodes;
foreach (XmlNode xn in xnl)
{
XmlElement xe = (XmlElement)xn;
if (xeGetAttribute("genre") == "fantasy")
{
xeRemoveAttribute("genre");//删除genre属性
}
else if (xeGetAttribute("genre") == "update李赞红")
{
xeRemoveAll();//删除该节点的全部内容
}
}
xmlDocSave(@"d:\bookstorexml");

和其他双标签的方式是一样的 比如有这么一个XmlDocument对象doc, 对于一个双标签是这样的:

XmlNode node = docSelectSingleNode("//bandName");
nodeInnerText = "zhang";

对于一个单标签, 实际上是一样的

XmlNode anotherNode = docSelectSingleNode("//bandID");
nodeInnerText = "1";

重点在于InnerText属性表示标签内文本, 你知道这个就可以了

Good Luck


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13376407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存