C#怎么将一个xml的信息导入到另一个xml的某个节点中

fan867886914 2012-10-23 02:56:19
如1.xml内容
<a>
<b>1</b>
<b>2</b>
</a>
<a>
<b>11</b>
<b>12</b>
</a>

导入到2.xml中的<admin>中
效果如下:
<adminlist>
<admin>
<a>
<b>1</b>
<b>2</b>
</a>
<a>
<b>11</b>
<b>12</b>
</a>
</admin>
</adminlist>
用winfrom程序怎么写呀
...全文
601 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hauk 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

他的代码是循环一级子节点,我获取的值是三级或四级子节点所以报错
[/Quote]

你得在1.xml外面加一层跟节点,才能构成标准XML。
我的代码是把根节点下所有子节点插入到2.xml中。

test1.xml

<admin>
<a>
<b>1</b>
<b>2</b>
</a>
<a>
<b>11</b>
<b>12</b>
</a>
</admin>


test2.xml

<adminlist>
<admin>
<a>
<b>1</b>
<b>2</b>
</a>
<a>
<b>11</b>
<b>12</b>
</a>
</admin>
</adminlist>


插入代码:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("..\\..\\test.xml");//得加个根节点(XML只能包含一个根节点)
XmlDocument xmlDoc2 = new XmlDocument();
xmlDoc2.Load("..\\..\\test2.xml");
foreach (XmlNode item in xmlDoc.DocumentElement)
{
xmlDoc2.DocumentElement.SelectSingleNode("//admin").AppendChild(xmlDoc2.ImportNode(item, true/*true:表示包含该节点下所有子节点*/));
}
xmlDoc2.Save("..\\..\\test2.xml");
diecode 2012-10-23
  • 打赏
  • 举报
回复
不能把整个文档对象加到元素对象上吧

应该取得节点,然后循环取下去吧

没有验证,只是思路
mDevil 2012-10-23
  • 打赏
  • 举报
回复
AppendChild
fan867886914 2012-10-23
  • 打赏
  • 举报
回复
他的代码是循环一级子节点,我获取的值是三级或四级子节点所以报错
fan867886914 2012-10-23
  • 打赏
  • 举报
回复
string xml = Application.StartupPath + "\\YQPathConfig\\editor_list.xml";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(urlname);//得加个根节点(XML只能包含一个根节点)
XmlDocument xmlDoc2 = new XmlDocument();
xmlDoc2.Load(xml);
foreach (XmlNode item in xmlDoc.DocumentElement)
{
xmlDoc2.DocumentElement.SelectSingleNode(_name).AppendChild(xmlDoc2.ImportNode(item, true));
}

xmlDoc2.Save(xml);

我感觉是_name的错
xmlDoc2.DocumentElement.SelectSingleNode(_name).AppendChild(xmlDoc2.ImportNode(item, true));




lenovore 2012-10-23
  • 打赏
  • 举报
回复
#endif
lenovore 2012-10-23
  • 打赏
  • 举报
回复
XmlDocument xmlDoc = new XmlDocument();
#if DEBUG
xmlDoc.Load(@"..\..\test1.xml");
#else
xmlDoc.Load(Application.StartupPath + @"\test1.xml");
  • 打赏
  • 举报
回复
看看对xml的基本操作吧,思路是这样的:先读取a,把相关节点读出来,再找到b中合适的节点,插入,即可。
http://hi.baidu.com/moniteryao/item/d9a80a471d1120d3c0a5927d
XBodhi. 2012-10-23
  • 打赏
  • 举报
回复
 
你第一个 XML 有问题,么有 root 会报异常的哦。
XBodhi. 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

C# code

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("..\\..\\test1.xml");//得加个根节点(XML只能包含一个根节点)
XmlDocument xmlDoc2 = new XmlDocument();
xmlD……
[/Quote]

这个就可以。
Hauk 2012-10-23
  • 打赏
  • 举报
回复

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("..\\..\\test1.xml");//得加个根节点(XML只能包含一个根节点)
XmlDocument xmlDoc2 = new XmlDocument();
xmlDoc2.Load("..\\..\\test2.xml");
foreach (XmlNode item in xmlDoc.DocumentElement)
{
xmlDoc2.DocumentElement.SelectSingleNode("//admin").AppendChild(xmlDoc2.ImportNode(item, true));
}

xmlDoc2.Save("..\\..\\test2.xml");
TNight 2012-10-23
  • 打赏
  • 举报
回复
。。。错误!
fan867886914 2012-10-23
  • 打赏
  • 举报
回复
string sourcePath = urlname;
string xml = Application.StartupPath + "\\YQPathConfig\\editor_list.xml";
string targetPath = xml;
XElement sourceXml = XElement.Load(sourcePath);
XElement resultXMl = XElement.Load(targetPath);
try
{
resultXMl.Element(_name).Add(sourceXml);
}
catch (Exception ex)
{

throw;
}

resultXMl.Save(targetPath);
TNight 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

有错误
[/Quote]
错误贴出来
fan867886914 2012-10-23
  • 打赏
  • 举报
回复
有错误
lhx527099095 2012-10-23
  • 打赏
  • 举报
回复

string sourcePath = "1.xml的地址";
string targetPath = "2.xml的地址";
XElement sourceXml = XElement.Load(sourcePath);
XElement resultXMl = XElement.Load(targetPath);
resultXMl.Element("admin").Add(sourceXml);
resultXMl.Save(targetPath);

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧