1、读写XML有很多技术,Dom、Sax等,还有高级的读写技术XmlSerializer、 Linq To XML(System.Xml.Linq)、 System.Xml(XMLDocument)等, XmlSerializer要求对每种不同的文件都定义一套类,很麻烦,而Linq To XML则不需要单独创建类,当然更底层一些,代码比XmlSerializer多,灵活性更高。System.Xml下的类是2.0及之前操作xml推荐的,现在很多人也仍然在用这个namespace下的类,这个namespace下的类和Linq To XML非常相似,因此不用单独学。
2、核心类XElement,一个XElement表示一个节点,new XElement("Order"),创建一个名字为Order的标签,调用Add增加子节点,也是XElement 对象,和TreeView一样。
3、XDocument的Root属性表示根节点。
4、想得到字符串怎么办?ToString
5、调用XElement的Save方法将xml内容保存在Writer中。
6、代码示例:
XElement xeOrder = new XElement("Order");
xeOrder.Add(new XElement("CustomerName", "杨中科"));
xeOrder.Add(new XElement("OrderNumber", "BJ200888"));
XElement xeItems = new XElement("Items");
xeOrder.Add(xeItems);
XElement xeItem1 = new XElement("OrderItem");
xeItem1.Add(new XElement("ItemName", "电脑"));
xeItem1.Add(new XElement("Count", 3));
xeItems.Add(xeItem1);
XElement xeItem2 = new XElement("OrderItem");
xeItem2.Add(new XElement("ItemName", "电视"));
xeItem2.Add(new XElement("Count", 2));
xeItems.Add(xeItem2);
StringWriter writer = new StringWriter();
xeOrder.Save(writer);
Console.WriteLine(writer.ToString());
7、<!--fffff-->是注释(Comment),<connectionStrings>是元素(Element),他们都是节点(Node)。因为Nodes返回的既可能是注释,也可能是元素,所以只能返回Node类型。
8、xdoc.Elements() //只返回元素
9、xdoc.Nodes() //返回所有节点(包括注释等。)
10、var task = xdoc.Descendants("DefaultTask").Single(); //Descendants()在子孙后代中找标签名为DefaultTask的元素慎用,容易取错结点。