首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

linq to xml 查询有关问题

2012-04-17 
linq to xml 查询问题首先我想问下XML我这样写可以么?rootT namet1D named1ddd/DD named2ccc

linq to xml 查询问题
首先我想问下XML我这样写可以么?
<root>
  <T name=t1>
  <D name=d1>ddd</D>
  <D name=d2>ccc</D>
  </T>
  <T name=t2>
  </T>
</root>

我想是这样查,先查根据name查到匹配的T,再在T中查到匹配name的D,更改D的value,如果T中不存在D的话,就新加一个D,并设置name和value

本来使用XPATH直接可以得到匹配name的T的,但是再用LINQ去查匹配的D的name我就不会了
或者,可以直接用linq来写完全过程么?

[解决办法]
XDocument doc = XDocument.Load("test.xml");
var nodes = from h in doc.Descendants("T")
where h.Attribute("name").Value == "t1"
select h;
if (nodes.Descendants("D").Count() > 0)
{
foreach (var item in nodes.Descendants("D"))
{
item.Value = "要修改的值";
doc.Save("test.xml");
}
}
else
{
XElement newEl = new XElement("D", new XAttribute("name", "要设定的name值"));
nodes.First().Add(newEl);
doc.Save("test.xml");
}
试试
[解决办法]

探讨
或者,可以直接用linq来写完全过程么?

[解决办法]
探讨

引用:

XDocument doc = XDocument.Load("test.xml");
var nodes = from h in doc.Descendants("T")
where h.Attribute("name").Value == "t1"
select h;……


我这里提示说没有Descendants啊,我是WPF,需要加什么引用么?……

[解决办法]
.net4.0没选错吧

热点排行