2012-05-08 32 views
0

我有一個XML文件:保存節點到另一個XML文件的Windows Phone 7的

<Root> 
    <Lv1> 
      <1_Data_Lv2_1>A1</1_Data_Lv2_1> 
      <2_Data_Lv2_1>A2</2_Data_Lv2_1> 
    </Lv1> 
    <Lv1> 
      <1_Data_Lv2_1>B1</1_Data_Lv2_1> 
      <2_Data_Lv2_1>B2</2_Data_Lv2_1> 
    </Lv1> 
</Root> 

C#

using (var myStream = new IsolatedStorageFileStream("Settings.xml", FileMode.Open, myIsolatedStorage)) 
{ 
    xdoc = XDocument.Load(myStream); 
} 

var lv1s = from lv1 in xdoc.Elements("Root") 
      select new 
      { 
       Children = lv1.Descendants("Lv1") 
      }; 

foreach (var lv1 in lv1s) 
{ 
    foreach (var lv2 in lv1.Children) 
    { 
     MessageBox.Show(Convert.ToString(lv2.Value)); 
    } 
} 

我怎樣才能< 1_Data_Lv2_1的所有節點LV1> ==「A1 「並寫入另一個XML?

+0

請包括您嘗試過的代碼無效。或者你問是否有人在這裏爲你寫代碼? –

+0

抱歉,你忘記了:) – user1259366

回答

1

張貼的XML是無效的,因爲一個節點不能以數字開頭,即1_Data_Lv2_1One_Data_Lv2_12_Data_Lv2_1Two_Data_Lv2_1

一旦你做出的改變,你可以找到所有的價值One_Data_Lv2_1節點A1:

var doc = XDocument.Load(myStream); 
// find all descendant nodes with a value of A1 
var a1s = doc.Root.Descendants("One_Data_Lv2_1") 
       .Where(x => x.Value == "A1") 

foreach(XElement e in a1s) 
{ 
    Debug.WriteLine(e.Value); 
} 

要添加查詢的結果到一個新的XML文檔:

var doc2 = new XDocument(); 
var root = new XElement("Root"); 
var lvl = new XElement("LvlNew"); 
// adding the a1s collection to the lvl node 
lvl.Add(a1s); 
root.Add(lvl); 
doc2.Add(root); 

看起來像這樣:

<Root> 
    <LvlNew> 
    <One_Data_Lv2_1>A1</One_Data_Lv2_1> 
    </LvlNew> 
</Root> 
相關問題