12

私のXML:

<Bank>
 <Customer id="0">
  <Accounts>
   <Account id="0" />
   <Account id="1" />                      
  </Accounts>
 </Customer>
 <Customer id="1">
  <Accounts>
   <Account id="0" />                    
   </Accounts>
 </Customer>
 <Customer id="2">
  <Accounts>
   <Account id="0" />                    
  </Accounts>
 </Customer>
</Bank>

新しいAccount要素を追加して、ID 2のCustomerと言います。わからない行を追加する方法を知っています。顧客を指定する方法(顧客のIDをどこに書き込むか)。

私のLINQtoXMLコード:

XDocument document = XDocument.Load("database.xml");
document.Element("Bank").Element("Customer").Element("Accounts").Add
     (
         new XElement
             (
                 "Account", new XAttribute("id", "variable")
             )
      );
document.Save("database.xml");

助けてくれてありがとう。XMLは私の良い友達ではありません:(

4

3 に答える 3

23

あなたはほとんどそこにいます、あなたのコードはデフォルトで最初に要素を追加しますCustomerid値が2-である顧客のコレクションで属性を検索する必要があります。

document.Element("Bank").Elements("Customer")
        .First(c => (int)c.Attribute("id") == 2).Element("Accounts").Add
                 (
                     new XElement
                         (
                             "Account", new XAttribute("id", "variable")
                         )
                  );
于 2012-11-11T17:54:05.917 に答える
3

わからない行を追加する方法を知っています。顧客を指定する方法(顧客のIDをどこに書き込むのですか?)

Customer最初に正しいIDの要素を見つける必要があります。例えば:

var customer = document.Root
                       .Elements("Customer")
                       .Single(x => (int) x.Attribute("id") == id);
customer.Element("Accounts").Add(new XElement("Account",
                                              new XAttribute("id", "variable")));

正しいIDを持つ要素がSingle1つだけではない場合、これは呼び出しで失敗することに注意してください。新しいCustomer顧客を作成したい場合は、もう少し作業を行う必要がありますが、おそらくそれはとにかく別の呼び出しになります。

于 2012-11-11T17:50:03.430 に答える
0
var cust = xDoc.Descendants("Customer")
               .First(c => c.Attribute("id").Value == "2");
cust.Element("Accounts").Add(new XElement("Account", new XAttribute("id","3") ));
于 2012-11-11T17:52:31.810 に答える