新普金娱乐网址


当我们歇斯底里

4星星|《三联生活周刊》前年47期:所谓“嬉皮精神”,说白了便是受各一个丁都能于匪影响其旁人的前提下,过好想使之在

[转]XPath语法数学 在C#中应用XPath示例

  • 十二月 20, 2018
  • 数学
  • 没有评论

此处自己加以多点 为啥来ParentGroup 和ChildrenGroup.

 

看看RDLC的设计

每当.Net中可由此XPathDocument或者XmlDocument类使用XPath。XPathDocument是特读的措施固定Xml节点或者性质文本等,而XmlDocument则是只是读写的。

首先大家的学科可以分为文理科,列名叫做[分类],那么科目
语文属于[文科],数学 物理属于[理科]。这样,[分类]哪怕parent
group,而其对承诺科目就是children group罗

//dog[/price<100]

 

/

要在RDLC显示为

切实表明如下:

点OK
就颇功告成了,然后会自行扩展一个课的表头,可以将这行删除掉,但绝不去
group

last() 表示收获最终一个节点 //cat[last()]

 

//price

我们管课是列放到表头,然后右健,如下图,扩大一个Column
Group数学 1

3. XPath逻辑运算符

序号 姓名 语文 数学 物理
1 张三 80 90 85
2 李四 70 0 0

选择pets节点

正文转自:http://blog.csdn.net/luochengbang/article/details/9964551

代表节点和子节点之间的间隔符

数学 2

符号

直接扣图

XPath的语法:

先行看看源数据:

6.通过XPath查找Xml节点

序号 姓名 科目 分数
1 张三 语文 80
2 张三 数学 90
3 张三 物理 85
4 李四 语文 70

7.通过Xslt转化Xml格式

何是动态列呢?经常我们由此存储过程时有列转行和行转列的做法,那么以RDLC
怎么补助啊?其实很简短,就是下了RDLC的 Column Groups

position() 表示节点的序号例如 //cat[position() = 2]
表示收获序号为2的dog节点

不行遥远无写博客了,关于动态列,国内大少资料有介绍动态列的,所思写点体会给哥们

C#拍卖Xml的连锁随笔:

数学 3

示例

这一次说了 Column Group 下次再说下 Row Group 用法 

富有price字节点值小于100之dog节点

数学 4

XPath的函数还有很多,包括字符串函数,数字函数及时函数等,具体可参见w3的网站。

总的来说 我们如若当RDL做行转列的语句就是以  Column Group 就好了

 

弹来的对话框,拔取Group by:科目

本身之新浪地址是:http://weibo.com/yukaizhao
我会把一些技艺经验碎片写到知乎中,欢迎关注。

 

 

中括号表示接纳规范,括号内为法

.

/pets

代表选取具有dog节点的color属性集合

>= 大于等于

关键字

说明

示例

示例说明

ancestor

当前节点的父祖节点

ancestor::pig

当前节点的祖先节点中的pig节点

ancestor-or-self

当前节点以及其父祖节点

ancestor::pig

 

attribute

当前节点的所有属性

attribute::weight

相当于@weight,attribute::和@是等价的

child

当前节点的所有字节点

child::*[name()!=’price’]

选择名字不是price的子节点

descendant

子孙节点

descendant::*[@*]

有属性的子孙节点

descendant-or-self

子孙节点以及当前节点

descendant-or-self::*

 

following

Xml文档中当前节点之后的所有节点

following::*

 

following-sibling

当前节点的同父弟弟节点

following-sibling::

 

preceding

Xml文档中当前节点之前的所有节点

preceding::*

 

namespace

选取当前节点的所有命名空间节点

namespace::*

 

parent

当前节点的父节点

parent::

相当于双点..

preceding-sibling

当前节点之后的同父兄节点

preceding-sibling::*

 

self

当前节点

self::*

相当于单点.

or 或者 或关系

1.通过XmlDocument读写Xml文档

|

 

分选干净节点pets

  1. XPath Axes
    从字面翻译是是XPath轴的意,但基于自身的晓是翻译成XPath节点关系运算关键字又适合,就是一模一样组要字加上::双冒号表示与时节点有关联的一个或千篇一律组节点.

!= 不等于

XPath可以飞快稳定到Xml中的节点依然性质。XPath语法很粗略,可是强大够用,它吧是运用xslt的基础知识。

意味着从今根节点开头摘

2. XPath数学运算符

/pets/.

color属性为white的dog节点和color属性为white的cat节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8" ?>
<pets>
  <cat color="black" weight="10">
    <price>100</price>
    <desc>this is a black cat</desc>
  </cat>
  <cat color="white" weight="9">
    <price>80</price>
    <desc>this is a white cat</desc>
  </cat>
  <cat color="yellow" weight="15">
    <price>80</price>
    <desc>this is a yellow cat</desc>
  </cat>
 
 
  <dog color="black" weight="10">
    <price>100</price>
    <desc>this is a black dog</desc>
  </dog>
  <dog color="white" weight="9">
    <price>80</price>
    <desc>this is a white dog</desc>
  </dog>
  <dog color="yellow" weight="15">
    <price>80</price>
    <desc>this is a yellow dog</desc>
  </dog>
</pets>

3.使用Linq to
xml存取XML

> 大于

//dog/@color

= 等于,相当于c#中的 ==

mod 表示取余

*

第1个dog节点

//dog[1]

最后一个dog节点,last()是xPath内置函数

//dog[@color=’white’]

?

星号表示此外名字的节点仍然性质

/pets/dog

name() 表示即节点名字 /pets/*[name() != ‘pig’]
表示/pets下名字不是pig的子节点

代表dog节点的所有子节点

5. 常用之XPath函数介绍:

@xx

本文转自:http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html

演示表明

表示拔取属性

中括号内数字也节点索引,类似c#顶语言中的往往组,数组下标是自从1开端的

//xx

以XPath表明式中常用之函数有下边两单:

单竖杠代表合并节点结合

and 并且 与关系

运语法: axisname::nodetest[predicate]
即轴名字::节点名字[博节点标准]

//dog/*

//dog[@color=’white’] | //cat[@color=’white’]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.XPath;
using System.Xml;
 
namespace UseXPathDotNet
{
    class Program
    {
        static void Main(string[] args)
        {
            UseXPathWithXPathDocument();
 
            UseXPathWithXmlDocument();
 
            Console.Read();
        }
 
        static void UseXPathWithXmlDocument()
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("http://www.cnblogs.com/yukaizhao/rss");
            //使用xPath选择需要的节点
            XmlNodeList nodes = doc.SelectNodes("/rss/channel/item[position()<=10]");
            foreach (XmlNode item in nodes)
            {
                string title = item.SelectSingleNode("title").InnerText;
                string url = item.SelectSingleNode("link").InnerText;
                Console.WriteLine("{0} = {1}", title, url);
            }
        }
 
        static void UseXPathWithXPathDocument()
        {
            XPathDocument doc = new XPathDocument("http://www.cnblogs.com/yukaizhao/rss");
            XPathNavigator xPathNav = doc.CreateNavigator();
            //使用xPath取rss中最新的10条随笔
            XPathNodeIterator nodeIterator = xPathNav.Select("/rss/channel/item[position()<=10]");
            while (nodeIterator.MoveNext())
            {
                XPathNavigator itemNav = nodeIterator.Current;
                string title = itemNav.SelectSingleNode("title").Value;
                string url = itemNav.SelectSingleNode("link").Value;
                Console.WriteLine("{0} = {1}",title,url);
            }
 
        }
    }
}

5.Xml体系化或者反体系化类

所有color为white的dog节点

 

<= 小于等于

– 表示数字相减

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
 
namespace UseXPath1
{
    class Program
    {
        static void Main(string[] args)
        {
            string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<pets>
  <cat color=""black"" weight=""10"" count=""4"">
    <price>100</price>
    <desc>this is a black cat</desc>
  </cat>
  <cat color=""white"" weight=""9"" count=""5"">
    <price>80</price>
    <desc>this is a white cat</desc>
  </cat>
  <cat color=""yellow"" weight=""15"" count=""1"">
    <price>110</price>
    <desc>this is a yellow cat</desc>
  </cat>
 
 
  <dog color=""black"" weight=""10"" count=""7"">
    <price>114</price>
    <desc>this is a black dog</desc>
  </dog>
  <dog color=""white"" weight=""9"" count=""4"">
    <price>80</price>
    <desc>this is a white dog</desc>
  </dog>
  <dog color=""yellow"" weight=""15"" count=""15"">
    <price>80</price>
    <desc>this is a yellow dog</desc>
  </dog>
 
    <pig color=""white"" weight=""100"" count=""2"">
    <price>8000</price>
    <desc>this is a white pig</desc>   
    </pig>
</pets>";
 
            using (StringReader rdr = new StringReader(xml))
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(rdr);
 
                //取所有pets节点下的dog字节点
                XmlNodeList nodeListAllDog = doc.SelectNodes("/pets/dog");
 
                //所有的price节点
                XmlNodeList allPriceNodes = doc.SelectNodes("//price");
 
                //取最后一个price节点
                XmlNode lastPriceNode = doc.SelectSingleNode("//price[last()]");
 
                //用双点号取price节点的父节点
                XmlNode lastPriceParentNode = lastPriceNode.SelectSingleNode("..");
 
                //选择weight*count=40的所有动物,使用通配符*
                XmlNodeList nodeList = doc.SelectNodes("/pets/*[@weight*@count=40]");
 
                //选择除了pig之外的所有动物,使用name()函数返回节点名字
                XmlNodeList animalsExceptPigNodes = doc.SelectNodes("/pets/*[name() != 'pig']");
              
 
                //选择价格大于100而不是pig的动物
                XmlNodeList priceGreaterThan100s = doc.SelectNodes("/pets/*[price div @weight >10 and name() != 'pig']");
                foreach (XmlNode item in priceGreaterThan100s)
                {
                    Console.WriteLine(item.OuterXml);
                }
 
                //选择第二个dog节点
                XmlNode theSecondDogNode = doc.SelectSingleNode("//dog[position() = 2]");
 
                //使用xpath ,axes 的 parent 取父节点
                XmlNode parentNode = theSecondDogNode.SelectSingleNode("parent::*");
 
                //使用xPath选择第二个dog节点前面的所有dog节点
                XmlNodeList dogPresibling = theSecondDogNode.SelectNodes("preceding::dog");
 
                //取文档的所有子孙节点price
                XmlNodeList childrenNodes = doc.SelectNodes("descendant::price");
            }
 
            Console.Read();
        }
    }
}

 

双点,表示接纳父节点

?

/pets/dog[0]/..

XPath使用示例,请圈上面的代码注释 

< 小于

代表于周xml文档中觅,而非考虑当下节点地方

 

2.使用XmlReader读Xml使用XmlWriter写Xml

1. XPath遭的号子

+ 加号表示加

..

div 代表除以,这里数学及之除号/已经为作为节点内相隔符了

//dog[last()]

一般来说代码示例显示了哪采纳XPathDocument和XmlDocument

说明

摘pets节点下之dog节点

上述是XPath的语法,下边大家看下哪些在.Net中使用XPath

//dog/@*

[…]

意味着dog节点的具备属性节点

拔取文档中存有的price节点

示例Xml:

意味着pets节点,也即是首先个dog节点的父节点

4.经过XmlScheme定义固定格式xml文档

单个英文半赛句点表示接纳时节点

* 表示乘以

 

?

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图