笔记:xml元素的查询


  在操作xml文件时,xml文档经常都会有默认的命名空间或者引入一些其它的命名空间。对于这种含有命名空间的元素如何查询。在了解了XDocument对象后,我使用了如下的查询。首先存在一个简单的xml文档。

<company xmlns="http://www.sfd.com"              
               xmlns:e="clrnamespace=Project.Helper;assembly=Project.Helper.SqlHelper">
   <employee>
      <name id="0001">Henson</name>
      <position>Pro Manager</position>
      <sex>M</sex>
      <salary>10000</salary>
   </employee>
   <schedule>
      <weekly>1-5</weekly>
      <day>9:00-18:00</day>
   </schedule>
   <e:database type="sql" user="sa" pwd="sffdfse" />
   <e:database type="access" user="admin" pwd="asd"/>
</company>

  如果需要查询database元素,并且type属性为sql。使用如下代码:

  XDocument xDoc = XDocument.Load("test.xml);
  XName xName = XName.Get("database", "clrnamespace=Project.Helper;assembly=Project.Helper.SqlHelper");
   foreach (var xNode in xDoc.Root.Descendants(xName))
  {
                    if(xNode.Attribute("type").Value=="sql")
                    {
                        MessageBox.Show("It's finded!");
                        ....其它逻辑操作
                    }
  }

  这里涉及到以下几个对象:

1.XDocument 利用它的静态方法Load(),加载xml文件到内存中;

2.XName 表示一类元素或特性,我的理解就是表示一个标签。在代码中,我直接使用了XName.Get()方法获取。msdn上建立通过XNamespace和它的重载+运算提供,写法应该如下:

XNamespace x="clrnamespace=Project.Helper;assembly=Project.Helper.SqlHelper";
XName xName=x+"database";

  注意:对于有默认命名空间的xml文件,也应该指定XName。

3.descandent(XName)方法,用于获取当前元素指定XName类型的子孙元素。

 

 

                                                                                                                                                         

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号