我可以选择第一个客户节点并使用下面的代码更改其公司名称。
但是如何选择 ID=2 的客户节点呢?
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");