首先,你要通过linq语言首先找到你需要 *** 作的节点,如:
IEnumerable<XElement>element = from el in xe.Elements("student") where el.Element("sex").Value=="女"
select e
XElement x= element.ElementAt(0)
这样就找到了满足条件的第一个元素
其次,通过简单的Xelemen的add方法就可以加入元素或者属性,如
x.Add(new XElement("xxx",new XAttribute("atrbitue","value1"))
通过这两步就完成你的目的
根据你的贴图可以看出你的记录只有一个唯一键值,用户名,那么如果想删除
记录必须找到这个唯一键值的在xml元素中对应的属性,通过这个属性确定这个元素,然后删除这个元素。我们可以通过linq语句来 *** 作。
下面的代码将用来 *** 作xml
string
xmlpath="你xml的地址"
xdocument
xdoc
=
xdocument.load(xmlpath)
xelement
xele
=
xdoc.root.element("元素名")
//如果你要根据属性来查询的话,这么用
ienumerable
xeles=from
xel
in
xdoc.root.descendants()
where
xel.attribute("唯一键值的属性名").value=="唯一键值"
select
xel
xelement
xelee=xeles.firstordefault()
xelee.remove()
那么这样就删除了。
至于你的唯一键值如何获得,我想这个很好办,你用的是listview,通过listview的selected属性就可以得到你所选择行的行索引号,通过索引号就自然可以读取到所在行的第一列的值。
首先获取想要复制节点值添加
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")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)