新普金娱乐网址


《给您三钟头,数学新手教师该怎么规划培养和演习科指标布局》 —说给新手内训师的应急版干货

四星|《三联生活周刊》2017年肆7期:数学所谓“嬉皮精神”,说白了正是让每一个人都能在不影响别的人的前提下,过自身想要的活着

Interesting Finds: 二零零六.0陆.30

  • 四月 04, 2019
  • 数学
  • 没有评论

挑选pets节点下的dog节点

.NET

@xx

双点,表示选用父节点

SQLServer

在XPath表达式中常用的函数有上面多少个:

< 小于

Web

行使语法: axisname::nodetest[predicate]
即轴名字::节点名字[取节点标准]

Other

//xx

..

//dog[@color=’white’]

 

7.通过Xslt转化Xml格式

选料根节点pets

表示从根节点初步选拔

>= 大于等于

//dog/*

1般来说代码示例展示了什么选拔X帕特hDocument和XmlDocument

* 表示乘以

  1. XPath Axes
    从字面翻译那一个是XPath轴的意思,但听大人说本身的驾驭这么些翻译成X帕特h节点关系运算关键字更适合,便是一组第二字加上::双冒号表示和当下节点有涉嫌的二个或然一组节点.

 

[…]

X帕特h能够便捷稳定到Xml中的节点还是性质。XPath语法不会细小略,不过强大够用,它也是行使xslt的基础知识。

?

关键字

说明

示例

示例说明

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::*

相当于单点.

在.Net中能够经过XPathDocument大概XmlDocument类使用XPath。X帕特hDocument是只读的方式固定Xml节点可能性质文本等,而XmlDocument则是可读写的。

示例

演示说明

3.使用Linq to
xml存取XML

/pets/dog

中括号内数字为节点索引,类似c#等语言中的数组,数组下标是从1从头的

一. XPath中的符号

第1个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();
        }
    }
}

意味着dog节点的全数属性节点

5.Xml体系化大概反连串化类

and 并且 与关系

现实说明如下:

中括号表示采取标准,括号内为基准

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

?

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);
            }
 
        }
    }
}

代表从1切xml文书档案中追寻,而不思考当下节点地点

 

//dog[1]

 

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

选取文档中颇具的price节点

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

.

自家的博客园地址是:http://weibo.com/yukaizhao
作者会把有些技能经验碎片写到新浪中,欢迎关注。

//dog/@*

代表dog节点的全体子节点

XPath的函数还有好多,包蕴字符串函数,数字函数和时间函数等,具体能够参见w三的网址。

– 表示数字相减

单竖杠代表合并节点结合

/pets/dog[0]/..

意味着节点和子节点之间的间隔符

C#拍卖Xml的相干小说:

 

//dog[last()]

or 或者 或关系

*

如上是XPath的语法,上边大家看下如何在.Net中运用XPath

6.通过XPath查找Xml节点

//price

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

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

星号表示其别人字的节点照旧性质

五. 常用的XPath函数介绍:

具备price字节点值小于100的dog节点

 

/

1.通过XmlDocument读写Xml文档

XPath使用示例,请看上面包车型大巴代码注释 

+ 加号表示加

示例Xml:

所有color为white的dog节点

选择pets节点

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

last() 表示取最终多个节点 //cat[last()]

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

/pets

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

|

?

表示pets节点,也便是率先个dog节点的父节点

/pets/.

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

//dog[/price<100]

说明

 

!= 不等于

符号

mod 表示取余

表示选用属性

div 表示除以,那里数学上的除号/已经被看作节点之间相隔符了

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>

//dog/@color

3. XPath逻辑运算符

XPath的语法:

<= 小于等于

单个英文半角句点表示选拔当前节点

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

> 大于

二. X帕特h数学生运动算符

 

 

相关文章

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