linqtoxml读写xml
1.对XAttribute使用命名空间
XElement root = new XElement("ESBInput", new XAttribute(XNamespace.Xmlns + "iib", "http://www.oppein.com/ESBService"));
生成的xml为:
<ESBInput xmlns:iib="http://www.adventure-works.com"></ESBInput>
注意其中的 :iib iib即为XAttribute的命名空间
xmlns:iib
2.XElement使用命名空间
XNamespace aw = "http://www.adventure-works.com"; XElement root = new XElement(aw + "Root", "Content");
生成的xml为:
<Root xmlns="http://www.adventure-works.com">Content</Root>
3.读xml
参考http://www.cnblogs.com/bianlan/archive/2013/04/29/3050530.html
xml结构:
<?xml version="1.0" encoding="utf-8" ?> <foo> <bar>Test 1</bar> <baz> <bar>Test 2</bar> </baz> <bar>Test 3</bar> </foo>
查询代码:
XDocument doc = XDocument.Load("input.xml"); XElement root = doc.Root; foreach (XElement e in root.Elements("bar")) { Console.WriteLine("Elements : " + e.Value); } foreach (XElement e in root.Descendants("bar")) { Console.WriteLine("Descendants : " + e.Value); }
结果:
Elements : Test 1 Elements : Test 3 Descendants : Test 1 Descendants : Test 2 Descendants : Test 3
由上可知,Elements不能查询包含在其子节点中的<bar>节点的元素,它是查询root直接所属的一级chirden元素,而Descendants是查询root节点下的所有的<bar>节点元素。
另外,Elements写法繁琐,需要从根节点元素一直往下开始写:如root.Elements("baz").Elements("bar"),而Descendants则不需要,直接root.Descendants("name")就可以了