2012-07-23 5 views
0

이것은 하루 종일 나를 미치게했습니다. xdocument가 있고 값을 변경하기 만하면됩니다. 나는 내가 LINQ를 사용하고자하고 XElement를 시도 단순히LINQ to XML - 수정

<attribute name="Book"> 
     <selection value="Book_Name" type="Book" /> 
</attribute> 

<attribute name="Book"> 
    <selection value="CorrectBookName" type="Book" /> 
</attribute> 

변경되어 수행 할 작업을

<session> 
    <immediate> 
<pivot name="test"> 
    <axes> 
    <axis position="SLICERS"> 
     <attribute name="Book"> 
     <selection value="Book_Name" type="Book" /> 
     </attribute> 
     <attribute name="Result Namespace"> 
     <selection value="blah blah" /> 
     </attribute> 
     <attribute name="Date"> 
     <selection value="2012-05-16" /> 
     </attribute> 
     <attribute name="Measure"> 
     <selection value="123" /> 
     </attribute> 
    </axis> 
    <axis position="SIDE"> 
     <attribute name="ttx" mode="ALL"></attribute> 
    </axis> 
    <axis position="TOP"> 
     <attribute name="hhy" mode="ALL"></attribute> 
    </axis> 
    </axes> 
    <source name="risk" /> 
    <aggregate expression="SUM(Money Value)" /> 
    <grid-processor name="errors" /> 
</pivot> 
    </immediate> 
</session> 

을 다음과 같이

XML 보인다 - 블록을 얻을 수 있지만 업데이트는 없습니다.

 XElement amend = xdoc.Descendants("attribute").First(el => (String)el.Attribute("selection") == "value"); 

누구든지 아이디어가 있습니까?

답변

0

XElement.SetAttributeValue() 메서드를 사용해야합니다. 속성을 변경할 요소를 선택하고 SetAttributeValue()를 호출하면됩니다. 제공하는 이름이있는 속성이 없으면 새 속성이 만들어지고 그렇지 않으면 기존 속성의 값이 새 속성으로 바뀝니다. 더 많은 예제와 자세한 내용은 msdn을보십시오. http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.setattributevalue.aspx

+0

나는 이것을 시도해 왔습니다. amend.SetAttributeValue ("value", "CorrectBookName"); 에서 결과는 <이름 = "책"속성 값 = "CorrectBookName"> <선택 값 = "BOOK_NAME"유형 = "책 계층 구조"/> – user1156000

+0

그 무시 - 가 XElement를 수정 다음 레벨을 선택하는 데 필요한 = xdoc.Descendants ("selection"). 첫 번째 (el => (String) el.Attribute ("type"). 값 == "Book Hierarchy"); – user1156000