登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

涤心斋

淡泊以明志,宁静以致远!

 
 
 

日志

 
 

xml学习笔记(六)  

2008-02-26 12:27:42|  分类: 专业 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  实验的xml内容如下:

<?xml version="1.0" encoding="gb2312" ?>
<!--这只是一个简单的xml实验,用于测试dom和XPath-->
<Forms>
  <Form name="A">
    <Control name="txt1" bindingSource="bs1" fieldName="txt1"/>
    <Control name="txt2" bindingSource="bs1" fieldName="txt2"/>
    <Control name="txt3" bindingSource="bs1" fieldName="txt3"/>
    <Control name="txt4" bindingSource="bs1" fieldName="txt4"/>
  </Form>
  <Form name="B">
    <Control name="txt10" bindingSource="bs2" fieldName="txt10"/>
    <Control name="txt11" bindingSource="bs2" fieldName="txt11"/>
    <Control name="txt12" bindingSource="bs2" fieldName="txt12"/>
    <Control name="txt13" bindingSource="bs3" fieldName="txt13"/>
  </Form>
</Forms>

  其实,我打算写一个关于控件的动态绑定的框架,我前公司一个窗口的控件数达几百个,尽管现在出来了,我也想拿这个需求来练一练手嘛。上面这个xml就是我的初步设想,很粗糙。

  针对这个xml文件,我写了些试验代码,如:

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("A.xml");
            XmlElement ele1 = xmlDoc.DocumentElement;
            XmlNodeList xmlList = ele1.SelectNodes(@"child::Form[@name='A']");
           
            txt1.Text = string.Empty;
            foreach (XmlNode xmlE in xmlList)
            {
                txt1.Text += xmlE.InnerXml+"\r\n";
            }

  这段代码能查到节点。事实上,我们写代码的时候很容易范错误,如写成以下几种形式:

  一、XmlNodeList xmlList = ele1.SelectNodes(@"child::/Forms/Form[@name='A']");

  二、XmlNodeList xmlList = ele1.SelectNodes(@"child::Forms/Form[@name='A']");

  三、XmlNodeList xmlList = xmlDoc.SelectNodes(@"child::/Forms/Form[@name='A']");

  事实上,这三种方法都是错误的,这是一个相对路径的问题。如果是以xmlDoc来查的话,应当写成这样:

  XmlNodeList xmlList = xmlDoc.SelectNodes(@"child::Forms/Form[@name='A']");

  总之,无论是谁查,都不能写成绝对路径,也就是说前面不加/。加了运行时就出错了。

  XPath的好例子,点此处进入。XPath的语法、用法并不复杂,它的精华都在谓词、函数。它们的组合产生不可思议的效果。

  评论这张
 
阅读(738)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018