2016-11-16 3 views
0

Hier ist mein Code, um meinen XML-Code zu schreiben. für diesen XML-Code, um das spezifische Format für meine xmlFüllen von Datagridview mit Daten aus XML-Datei. Bearbeiten und speichern zurück in XML C#

using (XmlWriter xmlWriter = XmlWriter.Create(path, xmlWriterSettings)) 
{ 
    xmlWriter.WriteStartElement("Address"); 
    xmlWriter.WriteStartElement("Work"); 
    foreach (DataRow dataRow in dt.Rows) 
    { 
     xmlWriter.WriteStartElement("MD"); 
     foreach (DataColumn dataColumn in dt.Columns) 
     { 
      xmlWriter.WriteElementString(dataColumn.ColumnName, dataRow[dataColumn].ToString()); 
     } 
     xmlWriter.WriteEndElement(); 
    } 
    xmlWriter.WriteEndElement();//</Work> 
    xmlWriter.WriteStartElement("Persons"); 
    foreach (DataRow dataRow in dt2.Rows) 
    { 
     xmlWriter.WriteStartElement("Person"); 
     foreach (DataColumn dataColumn in dt2.Columns) 
     { 
      xmlWriter.WriteElementString(dataColumn.ColumnName, dataRow[dataColumn].ToString()); 
     } 
     xmlWriter.WriteEndElement();//</Person> 
    } 
    xmlWriter.WriteEndElement();//</Persons> 
    xmlWriter.WriteEndElement();//</Address> 
} 

XML-Datei Ich bin die Kombination von zwei Tisch zu bekommen:

<Address> 
    <Work> 
    <Location> 
     <Location_ID>1</Location_ID> 
     <Location_NAME>Virginia</Location_NAME> 
    </Location> 
    </Work> 
    <Persons> 
    <Person> 
     <Person_ID>1</Person_ID> 
     <Person_Name>MARA</Person_Name> 
     <Location_ID>1</Location_ID> 
     <IsRequired>0</IsRequired> 
    </Person> 
    <Person> 
     <Person_ID>2</Person_ID> 
     <Person_Name>Tanner</Person_Name> 
     <Location_ID>1</Location_ID> 
     <IsRequired>0</IsRequired> 
    </Person> 
    <Person> 
     <Person_ID>3</Person_ID> 
     <Person_Name>Carlo</Person_Name> 
     <Location_ID>1</Location_ID> 
     <IsRequired>0</IsRequired> 
    </Person> 
    <Person> 
     <Person_ID>4</Person_ID> 
     <Person_Name>Casey</Person_Name> 
     <Location_ID>1</Location_ID> 
     <IsRequired>0</IsRequired> 
    </Person> 
    </Person> 
<Address> 

mein Problem ist, ich die person_id eine Zählung der Personen, die auf immer sein will die Datei. zum Beispiel, wenn ich Daten von Tanner in der obigen XML-Datei lösche. die XML sollte

<Address> 
    <Work> 
    <Location> 
     <Location_ID>1</Location_ID> 
     <Location_NAME>Virginia</Location_NAME> 
    </Location> 
    </Work> 
    <Persons> 
    <Person> 
     <Person_ID>1</Person_ID> 
     <Person_Name>MARA</Person_Name> 
     <Location_ID>1</Location_ID> 
     <IsRequired>0</IsRequired> 
    </Person> 
    <Person> 
     <Person_ID>2</Person_ID> 
     <Person_Name>Carlo</Person_Name> 
     <Location_ID>1</Location_ID> 
     <IsRequired>0</IsRequired> 
    </Person> 
    <Person> 
     <Person_ID>3</Person_ID> 
     <Person_Name>Casey</Person_Name> 
     <Location_ID>1</Location_ID> 
     <IsRequired>0</IsRequired> 
    </Person> 
    </Person> 
<Address> 
+0

Sie alles bisher versucht haben? Wenn ja, geben Sie den Code an. Wenn nicht, probieren Sie es aus und lassen Sie uns von den Problemen wissen. – Nitin

Antwort

2

Try xml linq wie diese aussehen

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication27 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      XDocument doc = XDocument.Load(FILENAME); 
      List<XElement> person_IDs = doc.Descendants("Person_ID").ToList(); 
      int count = 1; 
      foreach (XElement person_ID in person_IDs) 
      { 
       person_ID.Value = (count++).ToString(); 
      } 

     } 
    } 
} 
+0

das hat für mich funktioniert. Danke jdweng – user1998735

Verwandte Themen