[英]populating datagridview with data from XML file. edit and save back to XML C#
这是编写我的xml代码的代码。 对于此xml代码,我将两个表合并以获得xml的特定格式
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档案:
<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>
我的问题是我希望person_id始终是文件上人员的计数。 例如,当我删除上述xml中的Tanner数据时。 XML应该看起来像这样
<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>
试试xml linq
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();
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.