Fjli de blog分享 http://blog.sciencenet.cn/u/shipo Make or Break

博文

XML 节点修改

已有 3221 次阅读 2010-4-22 21:46 |个人分类:学习心得|系统分类:科研笔记| xml

xml 样例:

<XML>
  <Test>Hello World</Test>
<XML>

现在向XML里添加节点:

--------------------------
XmlDataDocument testXml = new XmlDataDocument();
testXml.LoadXml("<XML><Test>Hello World</Test></XML>");
XmlNode xn_root = testXml.DocumentElement;
for (int i = 0; i < 4; i++)
{
   XmlElement xe_user = testXml.CreateElement("User");
   XmlElement xe_name = testXml.CreateElement("Name");
   xe_name.InnerText = "Fangjun Lee";
   xe_user.AppendChild(xe_name);
   XmlElement xe_sex = testXml.CreateElement("Sex");
   xe_sex.InnerText = "Boy";
   xe_user.AppendChild(xe_sex);
   xn_root.AppendChild(xe_user);
}
---------------------------
结果:
-----
<XML>
  <Test>Hello World</Test>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
  </User>
</XML>
---------------------------

现在想往每个User节点里添加一个Age元素
-----
(1)
-----
XmlNodeList xn_test = testXml.GetElementsByTagName("User");
XmlElement xe_age = testXml.CreateElement("Age");
xe_age.InnerText = "26";

for (int i = 0; i < xn_test.Count; i++)
{
   xn_test[i+1].AppendChild(xe_age);
}
-----
结果:(没有达到预想结果)
-----
<XML>
  <Test>Hello World</Test>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
    <Age>26<Age>
  </User>
</XML>

-----
(2)
-----
XmlNodeList xn_test = testXml.GetElementsByTagName("User");
XmlElement xe_age = testXml.CreateElement("Age");
xe_age.InnerText = "26";

for (int i = 0; i < xn_test.Count; i++)
{
   xn_test[i+1].AppendChild(xe_age.Clone());
}
-----
结果:
-----
<XML>
  <Test>Hello World</Test>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
    <Age>26<Age>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
    <Age>26<Age>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
    <Age>26<Age>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
    <Age>26<Age>
  </User>
</XML>
-----
(3)
-----
XmlNodeList xn_test = testXml.GetElementsByTagName("User");

for (int i = 0; i < xn_test.Count; i++)
{
   XmlElement xe_age = testXml.CreateElement("Age");
   xe_age.InnerText = "26";
   xn_test[i+1].AppendChild(xe_age);
}
-----
结果:
-----
<XML>
  <Test>Hello World</Test>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
    <Age>26<Age>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
    <Age>26<Age>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
    <Age>26<Age>
  </User>
  <User>
    <Name>Fangjun Lee</Name>
    <Sex>Boy</Sex>
    <Age>26<Age>
  </User>
</XML>
-------------------------------------------------------

从这里可以看出,每次定义的 XmlNode 只能向XML Doc里添加一
次,如果要多次的话:(1)用Clone()方法或(2)每次重新定义



https://blog.sciencenet.cn/blog-427149-315084.html

上一篇:IBM MQ触发器触发进程
下一篇:PCI将多个波段图像变成一个多波段图像操作
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-1 02:38

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部