2011-07-22 70 views
1

我有一個xml文檔,有這樣的記錄集。linq更新問題

<document> 
    <row> 
    <Pub_Code>OHB-A0011</Pub_Code> 
    <Sec>16</Sec> 
    <Pags>20</Pags> 
    <Copies>1,000</Copies> 
    <Binding>Saddle Stitch</Binding> 
    <Tab>No tabs</Tab> 
    <Qty>0</Qty> 
    <Cover>Self Cover</Cover> 
    <Tpgs>0</Tpgs>   
    </row> 
</document> 

我有一個LINQ查詢wrtten這樣:

string xml_path = @"D:\Server-Apps\BooksData.xml"; 
XElement root = XElement.Load(xml_path); 

var selected = from myBooks in root.Elements("row") where myBooks.Element("Pub_Code").Value == "OHB-A0011" select myBooks; 

foreach (var d in selected) 
      { 
       Console.WriteLine("Pub_Code: {0}", d.Element("Pub_Code").Value); 
       Console.WriteLine("Cover: {0}", d.Element("Cover").Value); 
       d.SetElementValue("Tpgs", "test"); 

      } 

我可以閱讀的價值發現,但是當我使用d.SetElementValue( 「TPGS」, 「測試」);沒有更新。 該標籤已經在xml文件中。

+0

當你說「沒有更新」時,你是說它沒有更新迴文件中,或者它甚至沒有在內存中更新? –

+0

您的數據有,示例中的輸入錯誤或文件中的數據不正確?我假設一個錯字,更正了示例數據。如果不正確,則需要更改。 –

回答

2

如果你想保存更新XML回原來的文件,你需要做的:

root.Save(xml_path); 

我加了線T的程序結束,它似乎正常工作。

+0

就是這樣!我正在使用d.save,並且我正在用e記錄集寫入xml文件。再次感謝 – Mike

+0

很高興能幫到你! –