日期:2014-05-17  浏览次数:20804 次

这个Xpath查询如何写?
XML code

<my:myFields xmlns:my="http://schemas.microsoft.com/2010-12-28T03:12:17" xml:lang="zh-cn">
    <my:组1>
        <my:组2>
            <my:域1>1</my:域1>
            <my:域2>2</my:域2>
            <my:域3>3</my:域3>
        </my:组2>
              <my:组2>
                             <my:域1>4</my:域1>
                  <my:域2>4</my:域2>
                  <my:域3>4</my:域3>
        </my:组2>
         </my:组1>
    <my:域4>66</my:域4>
    <my:域5>55</my:域5>
    <my:域6>77</my:域6>
</my:myFields>


在reporting service中我以这样的xml为数据源。我想查询出所有的带数据的节点就是 <my:域1><my:域2>......
请问这个查询该怎么写?
我这样写“myFields/组1”只查出<my:域4><my:域5><my:域6>
这样写“myFields/组1/组2”只查出<my:域1><my:域2><my:域3>
请问高手该如何写??

------解决方案--------------------
你这个xml文档设计的不好啊,这样设计没法通过xpath筛选出你要的结果,除非用正则表达式。
如果你要用xpath来筛选,你得这样设计<my:域 id=1><my:域 id=2>……标签一致,给属性编号。
------解决方案--------------------
把页面创建好,用firefox,安装xpather这个插件,直接打开页面,右键点击你想看的元素,选择xpath,就能看到地址了,很方便,一劳永逸
------解决方案--------------------
好难 你这个xml文档设计的不好啊,这样设计没法通过xpath筛选出你要的结果,除非用正则表达式。
如果你要用xpath来筛选,你得这样设计<my:域 id=1><my:域 id=2>……标签一致,给属性编号
------解决方案--------------------
string xpath = "\\my:域{0}";

做个循环 for(int i=1; i<11; i++) 把 域1~域10 都查一遍。
------解决方案--------------------
个人觉得xml结构做的不好,做的好的话用linq to xml很轻松
------解决方案--------------------
<my:域1><my:域2>
你的这个要求是要域2域1之间是父子关系?