笔记: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类型的子孙元素。
浙公网安备 33010602011771号