以下のコードを使用して、最初の顧客ノードを選択し、その会社名を変更できます。
しかし、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");