<root>
<file_type name="AAAAAAA">
<item name="A1">
<key name="a11"></key>
<key name="a12"></key>
</item>
<item name="A2">
<key name="a21"></key>
<key name="a22"></key>
<key name="a23"></key>
</item>
<item name="A3">
</item>
<item name="A4"></item>
</file_type>
</root>
例如上文档 存在C盘下
<file_type name="AAAAAAA">
<item name="A1">
<key name="a11"></key>
<key name="a12"></key>
</item>
<item name="A2">
<key name="a21"></key>
<key name="a22"></key>
<key name="a23"></key>
</item>
<item name="A3">
</item>
<item name="A4"></item>
</file_type>
</root>
例如上文档 存在C盘下
这个是用着最简单的。此外就是XML的序列化。最后比较麻烦的就是用XmlTextWriter了。
然后在监视窗口看结构。把结构研究明白了, 就new一个相同结构的DataSet, 以后专门用来写数据用。
doc.LoadXml(XML_INIT);// 添加各个节点,数据doc.Save(sDataFileName);
也可以用XmlWriter等相关类
string xml = @"<?xml version='1.0'?>
<root>
<file_type name='AAAAAAA'>
<item name='A1'>
<key name='a11'></key>
<key name='a12'></key>
</item>
<item name='A2'>
<key name='a21'></key>
<key name='a22'></key>
<key name='a23'></key>
</item>
<item name='A3'>
</item>
<item name='A4'></item>
</file_type>
</root>";
XmlDocument doc = new XmlDocument();
doc.InnerXml = xml;
doc.Save("D:\\a.xml");
new XElement("file_type", new Attribute("name","AAAAAAA")
new XElement("item", new Attribute("name","A1"),
new XElement("key", new Attribute("name","a11")),
new XElement("key", new Attribute("name","a12"))),
new XElement("item", new Attribute("name","A2"),
new XElement("key", new Attribute("name","a21")),
new XElement("key", new Attribute("name","a22"))),
new XElement("item", new Attribute("name","A3"),
new XElement("item", new Attribute("name","A4"))
);TextWriter tw = File.CreateText("c:\xxx.xml");
tw.wirte(xmlTree1);
tw.close();
那如果我要再想加一个Item呢?
XDocument xd = new XDocument(
new XComment(updateID.ToString()),
new XElement("Root",
new XElement("BaseDir", textBox1.Text),
updatefiles.Select(t => new XElement("CusFileInfo",
new XElement("FileName", t.FileName),
new XElement("FileHash", t.FileHash),
new XElement("FileLength", t.FileLength)))
)
);
xd.Save("fileinfos.xml");
using System.Xml.Linq;namespace ConsoleApplication
{
class Program
{ static void Main(string[] args)
{
XDocument xd = new XDocument();
XDeclaration xdec = new XDeclaration("1.0", "uft-8", "yes");
XElement xeRoot =
new XElement("root",
new XElement("file_type", new XAttribute("name", "AAAAAAA")
, new XElement("item", new XAttribute("name", "A1")
, new XElement("key", new XAttribute("name", "a11"))
, new XElement("key", new XAttribute("name", "a12")))
, new XElement("item", new XAttribute("name", "A2")
, new XElement("key", new XAttribute("name", "a21"))
, new XElement("key", new XAttribute("name", "a22"))
, new XElement("key", new XAttribute("name", "a23")))
, new XElement("item", new XAttribute("name", "A3"))
, new XElement("item", new XAttribute("name", "A4"))
)
);
xd.Declaration = xdec;
xd.Add(xeRoot);
xd.Save(@"c:\test.xml");
}
}
}
<root>
<file_type name='AAAAAAA'>
<item name='A1'>
<key name='a11'></key>
<key name='a12'></key>
</item>
<item name='A2'>
<key name='a21'></key>
<key name='a22'></key>
<key name='a23'></key>
</item>
<item name='A3'>
</item>
<item name='A4'></item>
</file_type>
</root>";
XmlDocument doc = new XmlDocument();
doc.InnerXml = xml;
XmlElement xe = doc.CreateElement("item");
xe.SetAttribute("name", "A5");
doc.SelectSingleNode("//root//file_type").AppendChild(xe);
doc.Save("D:\\a.xml");
XmlWriter。 这个应该是最底层的。不要用字符串自己拼。 那不是扯淡么。
using System.Xml;XmlWriter writer = XmlWriter.Create("test.xml");
writer.WriteStartElement("root");writer.WriteStartElement("file_type");
writer.WriteStartAttribute("name", "AAAAAA");
writer.WriteEndAttribute();writer.WriteStartElement("item");
writer.WriteStartAttribute("name", "A1");
writer.WriteEndAttribute();
writer.WriteStartElement("key");
writer.WriteStartAttribute("name", "a11");
writer.WriteEndAttribute();
writer.WriteEndElement();// key
writer.WriteEndElement();// item
writer.WriteEndElement();// file_type
writer.WriteEndElement();// root
writer.Close();