你的位置:首页 > ASP.net教程

[ASP.net教程]C# XML技术总结之XDocument 和XmlDocument


引言

虽然现在Json在我们的数据交换中越来越成熟,但

C#中对

本文就从对照的方式来总结C#中

简介

System.

LINQ to

  • 从文件或流加载

  • 使用功能构造从头创建

  • 使用 LINQ 查询来查询

  • 操作内存中的

  • 使用 XSD 验证

  • 组合使用这些功能将

 

 

XDocument 和

如果

如果

 

XDocument VS.

 

比较项 XDocument (LINQ to
  需要熟悉DOM知识  
支持的.NetFramework版本 .NET version 1.0 + .NET version 3.5 or later(Linq引入后)
杂项   Unity3D projects for Windows 8.
Xbox 360 and Windows Phone OS 7.0,必须使用XDocument
Namespace  System. System.
LINQ to 不支持 支持
行号信息 不能提供行号信息 通过I提供了行号信息
命名空间 支持写 支持元素级写
XPath 不支持 支持, 参考System.
注释 不支持 支持可扩展的批注集,请参见 LINQ to
校验Schema 支持,参考Validate(ValidationEventHandler) 支持 ,参考Validate(
加载 成员方法加载(需要先new
静态方法XElement.Load(@"books.   

imageimage

 

创建

使用

使用XDocument 的示例

XElement contacts =  new XElement("Contacts",    new XElement("Contact",      new XElement("Name", "Patrick Hines"),      new XElement("Phone", "206-555-0144",         new XAttribute("Type", "Home")),      new XElement("phone", "425-555-0145",        new XAttribute("Type", "Work")),      new XElement("Address",        new XElement("Street1", "123 Main St"),        new XElement("City", "Mercer Island"),        new XElement("State", "WA"),        new XElement("Postal", "68042")      )    )  );

 

加载

使用

使用XDocument 的示例

XElement booksFromFile = XElement.Load(@"books.

 

命名空间的处理

使用

public void add

使用XDocument 的示例

示例1,增加namespace

XNamespace ns = "http://somewhere.com";XElement element = new XElement(ns + "elementName");// etc
 

示例2,读取含有namespace的文件

string markup = @"<aw:Root 

 

XDocument 

XDocument  VS. XElement

 

XDocument  XElement
XDocument.Load() 加载整个 XElement.Load()不会加载

XElement.Load()示例代码

File.WriteAllText("Test.

 

XDocument.Load() 示例代码:

File.WriteAllText("Test.

 

XPath

XPath的强大之处在于处理元素导航还可以进行计算

  • XPathSelectElement - Single Element
  • XPathSelectElements - Node Set
  • XPathEvaluate - Scalars and others

示例:

<
 
 

C#处理计算

var node = xele.XPathSelectElement("/

 

这里只是总结知识点,但具体的关于更多XPath的内容可以移步到XPath 教程

 

public class MyAnnotation{  private string tag;  public string Tag { get { return tag; } set { tag = value; } }  public MyAnnotation(string tag)  {    this.tag = tag;  }}class Program{  static void Main(string[] args)  {    XElement root = new XElement("Root", "content");    root.AddAnnotation(new MyAnnotation("T1"));    root.AddAnnotation(new MyAnnotation("T2"));    root.AddAnnotation("abc");    root.AddAnnotation("def");    IEnumerable<object> annotationList;    annotationList = root.Annotations(typeof(MyAnnotation));    foreach (object ma in annotationList)      Console.WriteLine(((MyAnnotation)ma).Tag);    Console.WriteLine("----");    IEnumerable<object> stringAnnotationList;    stringAnnotationList = root.Annotations(typeof(string));    foreach (object str in stringAnnotationList)      Console.WriteLine((string)str);  }}

 

 

总结

现在再写

另外XPath功能让XDocument如虎添翼,所以大家可以多研究下XPath.

至于XSD和XSL本文不做涉及,又需要的朋友参看参考文献

 

参考

LINQ to

 

1.通过

2.使用

3.使用Linq to

4.通过

5.

6.通过XPath查找

7.通过Xslt转化

8.XDocument or

9.W3CSchool中提供的

  • XSL
  • XSLT
  • XSL-FO
  • XPath
  • XQuery
  • XLink
  • XPointer
  • DTD
  • Schema
  • XForms
  • WAP