2012-05-08 2 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)); 
    } 
} 

Как я могу получить все Узел lv1 из < 1_Data_Lv2_1> == «A1 "и написать в другой xml?

+0

Пожалуйста, включите код, который вы пробовали, что не работает. Или вы спрашиваете, будет ли кто-нибудь здесь писать код для вас? –

+0

извините, забудьте об этом :) – user1259366

ответ

1

посланной XML является недействительным как узел не может начинаться с цифры, т.е. 1_Data_Lv2_1 должен быть One_Data_Lv2_1 и 2_Data_Lv2_1 должны быть Two_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> 
Смежные вопросы