ASP.NET-第十一天-加强课程

本文介绍了C#中XML的基础知识及其与XPath的结合使用,包括XML的基本特性、DOM与SAX读写方式、XPath表达式的构成及使用方法,并探讨了C#中的对象拷贝与特性(Attribute)的应用。
第十一天

复习: 事件

wps_clip_image-20100

wps_clip_image-12665

BindingFlags.NonPublic | BindingFlags.Instance);//私有成员想要调用,就在后面加上这个

Var 只能出现在局部变量中, 不能再方法外,不能作为参数;

匿名类型是只读的,

扩展方法

1.增加一个静态类

2.在静态类中增加一个静态方法;

wps_clip_image-7183

没有必要, 就不要使用扩展方法, 在微软内部大量使用了扩展方法, 我们了解就好;

扩展方法其实就是一个静态类

XML基础(extensible  markup  language)

优点: 容易读懂; 格式标准任何语言都内置了XML分析引擎, 不用单独进行文件分析引擎的编写;

XML就是用一种格式化的方式来存储数据, 并且是文本文件任何时候都能很容易的用记事本打开;

Word在 07之后,都是采用的xml文件的格式存储的, 这样就算没有安装word, 只要将文件改成rar格式的, 然后解压,在得到的文件中找到xml文件就能查看其中的内容;

XML和HTML的区别:

1.有且只能有一个根元素;

2.XML中元素必须关闭;

3.XML中元素的属性值必须用引号;

4.XML大小写敏感(CaseSensitive)

dark horse

XML读写:

1.Dom(文档对象模型, 将整个xml加载到内存中,然后操作);

2.Sax (事件驱动 ,net中使用XmlReader (XmlTextReader), XmlWriter (XmlTextWriter) 来代替)

读取: 通过XDocument

1.加载xml文件

wps_clip_image-27168

2.获取根元素

wps_clip_image-15842

3.递归遍历xml 中的每个节点

wps_clip_image-4714//Elements是根节点的子节点

写入:

1.创建一个xml对象

wps_clip_image-18525

2.为其增加一个根节点

wps_clip_image-25361

3.蒋根节点加到对象中

wps_clip_image-6081

4.为根节点增加内容

wps_clip_image-31739

5.为其增加属性

wps_clip_image-22109

wps_clip_image-18488

6.将其加到根元素下

wps_clip_image-27924

7.将对象写入磁盘文件

wps_clip_image-22247

文档是这个

XDocument xdoc = new XDocument();

元素是这个类:

XElement xeRoot = new XElement("Website");

属性是这个类:

XAttribute attrUrl = new XAttribute("url","http://www.baidu.com");

注释是:

XCData这个类, 在这个类中,有一个标签: <description>在这个标签中可以写下任何字符

wps_clip_image-31021

隐式类型转换:

wps_clip_image-30795

可以这样调用

wps_clip_image-31119

显示转换:

wps_clip_image-10398

需要强转一下:

wps_clip_image-14027

wps_clip_image-24164

wps_clip_image-17582

XPath 表达式是使用下表中所示的运算符和特殊字符构造的。

/

子运算符;选择左侧集合的直接子级。此路径运算符出现在模式开头时,表示应从根节点选择该子级。

//

递归下降;在任意深度搜索指定元素。此路径运算符出现在模式开头时,表示应从根节点递归下降。

.

指示当前上下文。

..

当前上下文节点的父级。

*

通配符;选择所有元素,与元素名无关。

@

属性;属性名的前缀。

@*

属性通配符;选择所有属性,与名称无关。

:

命名空间分隔符;将命名空间前缀与元素名或属性名分隔。

( )

为运算分组,明确设置优先级。

[ ]

应用筛选模式。

[ ]

下标运算符;用于在集合中编制索引。

+

执行加法。

-

执行减法。

div

根据 IEEE 754 执行浮点除法。

*

执行乘法。

mod

从截断除法返回余数。

此表不包括布尔运算符和集运算符,这两个运算符在 布尔、比较和集表达式集运算中列出。

优先级顺序(从最高优先级到最低优先级)的定义如下表所示。

优先级

字符

用途

1

( )

分组

2

[ ]

筛选器

3

/ //

路径运算

分组运算符 () 仅适用于顶级路径表达式。例如, (//author/degree | //author/name) 是有效的分组运算,但 //author/(degree | name) 不是。

筛选模式运算符 ( []) 的优先级高于路径运算符( / 和 //)。例如,表达式 //comment()[3] 选择相对于文档中任意位置备注的父级索引等于 3 的所有备注。此表达式与表达式 (//comment())[3] 不同,后者选择相对于父级的所有备注集中的第三个备注。前一个表达式可以返回多个备注,后一个表达式只能返回一个备注。

这些运算符和特殊字符在本参考文档中详细说明。

路径运算符

特定类型的元素集合可以使用路径运算符( / 和 //)确定。这些运算符根据其参数的“左侧”集合进行选择,“右侧”集合表示要选择的元素。子运算符 ( /) 从左侧集合的直接子级中选择,而子代运算符 ( //) 从左侧集合的任意子代中选择。因此, // 可以作为一个或多个层次结构级别的替代。

注意,路径运算符在执行查询时更改上下文。通过将路径运算符连接在一起,用户可以遍历文档树。

示例

表达式

引用

author/first-name

当前上下文节点的 <author> 元素中的所有 <first-name> 元素。

bookstore//title

<bookstore>元素中一级或多级深度的所有 <title> 元素(任意后代)。注意,此表达式与以下模式 bookstore/*/title 不同。

bookstore/*/title

作为 <bookstore> 元素的孙代的所有 <title> 元素。

bookstore//book/excerpt//emph

<book>元素的 <excerpt> 子级中的任意位置和 <bookstore> 元素中的任意位置的所有 <emph> 元素:

.//title

当前上下文中一级或多级深度的所有 <title> 元素。注意,本质上只有这种情况需要句点表示法。

通配符

通过使用通配符 ( *) 集合,不使用元素名即可引用元素。*集合引用作为当前上下文的子级的所有元素,与名称无关。

示例

表达式

引用

author/*

<author>元素的所有元素子级。

book/*/last-name

所有作为 <book> 元素孙代的 <last–name> 元素。

*/*

当前上下文的所有孙级元素。

my:book

my命名空间中的 <book> 元素。

my:*

my命名空间中的所有元素。

注意,不支持模式 *:book。

特性

XPath 使用 @ 符号表示属性名。属性和子元素应公平对待,两种类型之间的功能应尽可能相当。

wps_clip_image-16446说明:

属性不能包含子元素,所以,如果对属性应用路径运算符,将出现语法错误。此外,不能对属性应用索引,因为根据定义,不为属性定义任何顺序。

示例

表达式

引用

@style

当前元素上下文的 style 属性。

price/@exchange

当前上下文内的 <price> 元素的 exchange 属性。

book/@style

所有 <book> 元素的 style 属性。

注意,以下示例无效,因为属性不能包含任何子级。

以带有颜色区分的格式查看复制到剪贴板打印

price/@exchange/total

查找多个属性

使用 @* 可以返回某个元素的所有属性。对于将属性作为记录中的字段的应用程序,此表达式可能非常有用。

示例

表达式

引用

@*

当前上下文节点的所有属性。

@my:*

my命名空间中的所有属性。不包括 my 命名空间中的元素的未限定特性。

注意,不支持模式 @*:title。

请参见

参考

XPath 示例

XML 扩展
Schema、DTD:约束xml书写规范

对象拷贝
就是将一个对象复制了一份;
浅拷贝

wps_clip_image-12594

虽然将对象复制了一份,但是它们两个指的是同一个对象;

由于字符串有”暂存池”(拘留池) 所以不考虑字符串;

MemberwiseClone创建当前的浅表副本,用方法进行浅拷贝时要用到的方法;

是当前类的方法;

Attribute

就是一个标签,在使用当前类的地方,通过反射获取该特性。

一般为了与Property(属性)区分,所以把attribute翻译成“特性”。

特性没有什么实际意义,就是打了一个标签(可能该类中还会存储一些数据)。

Attribute用来对类、属性、方法等标注额外的信息,贴一个标签。

Attribute的格式:[Attribute类名(构造函数参数)],如果没有参数可以简写为[Attribute类名]

<交易码  val="1000"/>

“交易码”是节点Element,value才是属性是Attribute。

[Obsolete("推荐用IncAge方法")]:过时成员。一个方法过时一般是不推荐再使用,不会再修改bug,甚至是在今以后版本中删除。

[Bindable]:把属性标记为Bindable,这个属性就可以进行数据绑定

[DisplayName],开发一个电话号码UserControl,将TelphoneNum字段的DisplayName设为“电话号码”。

wps_clip_image-9884

wps_clip_image-21498

当调用sayhi()时, 会提示你上面输入的一段话, 当在后面加上true时2, 表示这个方法不能再用了

wps_clip_image-12223

转载于:https://www.cnblogs.com/mafacai/archive/2012/12/12/2815144.html

多角色体系 支持管理员、商家、消费者三种角色,权限分级管控: 管理员:负责平台整体配置、用户审核、数据监控等全局操作。 商家:管理店铺信息、发布商品、处理订单、回复评价等。 消费者:浏览商品、加入购物车、下单支付、评价商品等。 实现用户注册(手机号 / 邮箱验证)、登录(支持密码 / 验证码 / 第三方登录)、个人信息管理(头像、收货地址、密码修改)。 权限精细化控制 商家仅能管理自家店铺及商品,消费者仅能查看和购买商品,管理员拥有全平台数据访问权限。 二、商品管理功能 商品信息维护 商家可发布商品:填写名称、分类(如服饰、电子产品)、子类别(如手机、笔记本)、规格(尺寸、颜色、型号)、价格、库存、详情描述(图文)、物流信息(运费、发货地)等。 支持商品上下架、库存调整、信息编辑,系统自动记录商品状态变更日志。 商品分类与搜索 按多级分类展示商品(如 “数码产品→手机→智能手机”),支持自定义分类体系。 提供智能搜索功能:按关键词(名称、品牌)搜索,支持模糊匹配和搜索联想;结合用户浏览历史对搜索结果排序(优先展示高相关度商品)。 商品推荐 基于用户浏览、收藏、购买记录,推荐相似商品(如 “浏览过该商品的用户还买了…”)。 首页展示热门商品(销量 TOP10)、新品上架、限时折扣等推荐列表。 三、订单与交易管理 购物车与下单 消费者可将商品加入购物车,支持修改数量、选择规格、移除商品,系统自动计算总价(含运费、折扣)。 下单流程:确认收货地址→选择支付方式(在线支付、货到付款)→提交订单→系统生成唯一订单号。 订单处理流程 订单状态跟踪:待支付→已支付→商家发货→物流运输→消费者收货→订单完成,各状态变更实时通知用户。 商家端功能:查看新订单提醒、确认发货(填写物流单号)、处理退款申请(需审核理由)。 消费者端功能:查看订单详情、追踪物流、申请退款 / 退货、确认收货。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值