C# 操作xml 在指定节点插入新节点,该如何操作?
答案:2 悬赏:30
解决时间 2021-01-10 05:41
- 提问者网友:溺爱和你
- 2021-01-09 17:26
C# 操作xml 在指定节点插入新节点,该如何操作?
最佳答案
- 二级知识专家网友:零点过十分
- 2021-01-09 17:56
首先获取想要复制节点的值,然后添加。
XElement rootNode = XElement.Load("test.xml");
var result = from m in rootNode.Elements ("MM02")
where m.Attribute ("id").Value =="1"
select new
{
id=m.Attribute ("id").Value ,
fname = m.Element ("FNAM").Value ,
fval = m.Element("FVAL").Value
};
foreach (var s in result)
{
XElement x =
new XElement("MM02", new XAttribute("id",s.id ),
new XElement ("FNAM",s.fname ),
new XElement ("FVAL",s.fval)
);
XElement node = rootNode.Element("MM02");
rootNode.Element("MM02").AddAfterSelf(x);
rootNode.Save("test.xml");
}追问你好,我用你的来实现,结果是多了一行及复制了两行,希望您在帮忙修改下,谢谢追答这个问题是这样的,在操作集合时不应该直接对集合进行修改,应该操作临时变量,修改后代码为
XElement rootNode = XElement.Load("test.xml");
XElement temp = XElement.Load("test.xml");
var result = from m in temp.Elements("MM02")
where m.Attribute ("id").Value =="1"
select new
{
id=m.Attribute ("id").Value ,
fname = m.Element ("FNAM").Value ,
fval = m.Element("FVAL").Value
};
foreach (var s in result)
{
XElement x =
new XElement("MM02", new XAttribute("id", s.id),
new XElement("FNAM", s.fname),
new XElement("FVAL", s.fval)
);
XElement node = rootNode.Element("MM02");
rootNode.Element("MM02").AddAfterSelf(x);
}
rootNode.Save("test.xml");
XElement rootNode = XElement.Load("test.xml");
var result = from m in rootNode.Elements ("MM02")
where m.Attribute ("id").Value =="1"
select new
{
id=m.Attribute ("id").Value ,
fname = m.Element ("FNAM").Value ,
fval = m.Element("FVAL").Value
};
foreach (var s in result)
{
XElement x =
new XElement("MM02", new XAttribute("id",s.id ),
new XElement ("FNAM",s.fname ),
new XElement ("FVAL",s.fval)
);
XElement node = rootNode.Element("MM02");
rootNode.Element("MM02").AddAfterSelf(x);
rootNode.Save("test.xml");
}追问你好,我用你的来实现,结果是多了一行及复制了两行,希望您在帮忙修改下,谢谢追答这个问题是这样的,在操作集合时不应该直接对集合进行修改,应该操作临时变量,修改后代码为
XElement rootNode = XElement.Load("test.xml");
XElement temp = XElement.Load("test.xml");
var result = from m in temp.Elements("MM02")
where m.Attribute ("id").Value =="1"
select new
{
id=m.Attribute ("id").Value ,
fname = m.Element ("FNAM").Value ,
fval = m.Element("FVAL").Value
};
foreach (var s in result)
{
XElement x =
new XElement("MM02", new XAttribute("id", s.id),
new XElement("FNAM", s.fname),
new XElement("FVAL", s.fval)
);
XElement node = rootNode.Element("MM02");
rootNode.Element("MM02").AddAfterSelf(x);
}
rootNode.Save("test.xml");
全部回答
- 1楼网友:第四晚心情
- 2021-01-09 18:25
用Linq,去看看,很简单的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯