我可以选择第一个客户节点,并使用下面的代码更改其公司名称。
但是如何选择ID=2所在的customer节点?
XDocument xmldoc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XComment("These are all the customers transfered from the database."),
new XElement("Customers",
new XElement("Customer",
new XAttribute("ID", 1),
new XElement("FullName", "Jim Tester"),
new XElement("Title", "Developer"),
new XElement("Company", "Apple Inc.")
),
new XElement("Customer",
new XAttribute("ID", 2),
new XElement("FullName", "John Testly"),
new XElement("Title", "Tester"),
new XElement("Company", "Google")
)
)
);
XElement elementToChange = xmldoc.Element("Customers").Element("Customer").Element("Company");
elementToChange.ReplaceWith(new XElement("Company", "new company value..."));
答案:
感谢各位,以下是在customer-with-id-2元素中搜索出company元素的确切语法,然后只更改company元素的值:
XElement elementToChange = xmldoc.Element("Customers")
.Elements("Customer")
.Single(x => (int)x.Attribute("ID") == 2)
.Element("Company");
elementToChange.ReplaceWith(
new XElement("Company", "new company value...")
);
使用方法语法回答:
我也是在方法语法中弄明白的:
XElement elementToChange = (from c in xmldoc.Element("Customers")
.Elements("Customer")
where (int)c.Attribute("ID") == 3
select c).Single().Element("Company");
发布于 2009-02-27 10:34:25
假设ID是唯一的:
var result = xmldoc.Element("Customers")
.Elements("Customer")
.Single(x => (int?)x.Attribute("ID") == 2);
对于不同的情况,您也可以使用First
、FirstOrDefault
、SingleOrDefault
或Where
,而不是Single
。
发布于 2009-02-27 10:37:26
我会使用类似这样的东西:
dim customer = (from c in xmldoc...<Customer>
where c.<ID>.Value=22
select c).SingleOrDefault
编辑:
缺少c#标记,sorry......the示例在VB.NET中
https://stackoverflow.com/questions/594231
复制相似问题