2013-02-11 3 views
1

Я добавляю к существующему файлу xml: Код ниже: Я использую C# .net 4.5 VS 2012 и создаю приложение WPF.Добавить Xml определенное количество раз

Как я могу добавить это значение 30 раз и изменить только номер атрибута D100 до 2,3,4,5 и т. Д.? Другие значения одинаковы!

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 
using System.Xml; 

namespace AppendX 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void Button_Click_1(object sender, RoutedEventArgs e) 
     { 
      XmlDocument doc = new XmlDocument(); 
      doc.Load("C:\\Temp.xml"); 

      XmlNamespaceManager namespaces = new XmlNamespaceManager(doc.NameTable); 
      namespaces.AddNamespace("flp", "http://www.w3.org/2001/flp"); 



      XmlNode nextNode = doc.SelectSingleNode("/flp:Tab/flp:Designs", namespaces); 

      XmlElement D100 = doc.CreateElement("flp", "D100", "http://www.w3.org/2001/flp"); 
      D100.SetAttribute("Number", "2"); 

      XmlElement Code = doc.CreateElement("flp", "Code", "http://www.w3.org/2001/flp"); 
      Code.InnerText = "B"; 
      D100.AppendChild(Code); 

      XmlElement Documented = doc.CreateElement("flp", "Documented", "http://www.w3.org/2001/flp"); 
      Documented.InnerText = "false"; 
      D100.AppendChild(Documented); 

      nextNode.AppendChild(D100); 

      doc.Save("test1.xml"); 



     } 
    } 
} 

Вот образец xml, который я использую, извините, что я хотел выразить это!

<flp:Tab xmlns:flp="http://www.w3.org/2001/flp" Title="Testing"> 
    <flp:Form Number="0" id="1005" /> 
    <flp:Rev Time="2013-01-21T15:08:00"> 
    <flp:Author Name="Brad" Aid="15" /> 
    </flp:Rev> 
    <flp:Designs Id="D100"> 
    <flp:D100 Number="1"> 
     <flp:Code>A</flp:Code> 
     <flp:Documented>true</flp:Documented> 
    </flp:D100> 
    </flp:Designs> 
</flp:Tab> 
+2

У вас есть * использовать 'XmlDocument'? LINQ to XML становится гораздо более простым кодом. Даже если вы * do * должны использовать 'XmlDocument', с которым вы пытались сделать цикл? Похоже, вы можете просто поместить цикл вокруг кода, начинающегося с 'XmlElement D100 = ...' и заканчивая 'nextNode.AppendChild (D100);' ... –

ответ

1

Создайте отдельную частную функцию, которая будет обрабатывать создание элемента документа с учетом параметров. например:

private xmlelement dothework(string param1, string param2){ 

    'do all necessary work to set up the element in here and then return it 

} 

Я бы разграничить работу, как это, создать другую функцию для каждого раздела работы, так что в конце концов, вы можете просто перебрать и добавлять каждый к документу.

Смежные вопросы