2012-11-12 2 views
2

이 작업을 수행하는 데 하루 동안 노력하고 있습니다. 나는 XML에 LINQ를 사용하여 내 XML에서 돈 속성을 업데이트 할LINQ to XML을 사용하여 하위 트리에서 XML 특성 업데이트

내 XML은 다음과 같습니다

<Bank> 
    <Customer id="0"> 
    <FName>Adam</FName> 
    <LName>Kruz</LName> 
    <Accounts> 
     <Account id="0" money="1500" /> 
     <Account id="1" money="6500" /> 
     <Account id="2" money="0" /> 
    </Accounts> 
    </Customer> 
    <Customer id="1"> 
    <FName>Benny</FName> 
    <LName>Thoman</LName> 
    <Accounts> 
     <Account id="0" money="3200" /> 
    </Accounts> 
    </Customer> 
</Bank> 
이 코드를하지만 성공

XDocument document = XDocument.Load("database.xml"); 

     XElement root = document.Root; 

     root.Elements("Customer") 
      .Where(e => e.Attribute("id").Value.Equals(customerID.ToString())).Select(e => e.Descendants("Account") 
       .Where(f => f.Attribute("id").Value.Equals(this.id.ToString())).Select(f => f.Attribute("id")).First().SetValue(money.ToString())); 


     document.Save("database.xml"); 

과 노력

I've의 BEEM 오류가 발생했습니다 : 'System.Linq.Enumerable.Select (System.Collections.Generic.IEnumerable, System.Func)'메서드의 형식 인수를 사용법에서 유추 할 수 없습니다. 형식 인수를 명시 적으로 지정하십시오.

Pls는 많이 :(

답변

0

이 시도 내가 요소 (계정) 감사의 서브 트리 (계정)의 속성을 편집 어떻게 말해 :

var query = 
    from c in document.Root.Elements("Customer") 
    where c.Attribute("id").Value == customerID.ToString() 
    from a in c.Element("Accounts").Elements("Account") 
    where a.Attribute("id").Value == this.id.ToString() 
    select a; 

query 
    .First() 
    .Attribute("money") 
    .SetValue(money.ToString()); 
+0

이 하나의 작업을 완벽하게 감사합니다! – Safiron

관련 문제