操作带命名空间xml

1.xml格式如下:

 <?xml version="1.0" encoding="utf-8"?>

<rss  xmlns:dc="http://pur.org/dc/

        xmlns:slash="http://purls.rss/q">

    <item>

   <title>title-1</title>   

  <dc:creator> steve  eichert</dc:creator>

  <slash:creator> slash-1</slash:creator>

   </item>

 <item>

   <title>title-1</title>   

 

  <dc:creator> steve  eichert</dc:creator>

 

  <slash:creator> slash-1</slash:creator>

 

   </item>

 

</rss>

2.Dom中这样操作

 XmlDocument   doc  =new XmlDocument();

doc.Load("rss.xml");

XmlNamespaceManager ns=new XmlNamespaceManager(doc.NameTable);

ns.AddNamespace("dc","http://pur.org/dc/");

ns.AddNamespace("slash","http://purls.rss/q");

XmlNodeList commentNodes  =doc.SelectNodes("slash:creator",ns);

foreach(XmlNode  node in commentNodes   ){

  Console.WriteLine(node.InnerText);
}

3.在lin  to xml 中这样操

    XElement  rss  =XElement.Load("rss.xml");

    XNamespace dc  ="http://pur.org/dc/";

    XNamespace  slash="http://purls.rss/q";

   //使用完全 展开的XNamespace 和XName 查询

   IEnumerable<XElement>  comments   =rss.Descendants(slash+"creator");

    foreach( XElement  comment  in comments  ){

       Console.WriteLine((string)comment);

   }

   //查询本地的名称

  IEnumerable<XElement>  titles =rss.Descendants("title");

  foreach(XElement  title in titles){

  Console.WriteLine((string)title);
}

 使用ling to xml 处理起来感觉很直观了操作带有命名空间的和命名前缀的xml变的简单,所有的信息统一成一个概念,并封装在同一个xName 中

 

  

 

posted @ 2011-11-07 23:04  sulin  阅读(255)  评论(0编辑  收藏  举报