2013-02-11 62 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最终代码简单得多。即使你*不得不使用'XmlDocument',你试过了循环的方式吗?它看起来像你可能只是围绕代码开始'XmlElement D100 = ...',结束于'nextNode.AppendChild(D100);'...... – 2013-02-11 07:14:08

回答

1

创建一个单独的私有函数,该函数将根据参数处理文档元素的创建。例如:

private xmlelement dothework(string param1, string param2){ 

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

} 

我会分离喜欢这个工作,创建工作的各个部分不同的功能,所以,最终你可以遍历每个附加到文件。