Google [站内搜索]

预览模式: 普通 | 列表

WEB应用程序中分组数据的处理方法

在WEB应用程序中经常会碰到类似下边的分组数据:



这样的数据分散在WEB应用程序各个部分中,如果将他们都写死在页面,一旦要修改某项数据,将会是一件比较麻烦的事情,很自然的我们就想将他们存储到某个地方做为数据源,然后都从这边读取即可,接下来的问题是存储在哪边?最终我的选择是将他们存储在xml文件中。下边是一个简单的例子:

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4416

XPath语法

我们将在下面的例子中使用这个 XML 文档:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

1.选取节点

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。下面列出了最有用的路径表达式:

 表达式  描述
 nodename  选取此节点的所有子节点
 /  从根节点选取
 //  从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
 .  选取当前节
 ..  选取当前节点的父节点
 @  选取属性

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

路径表达式 结果
bookstore 选取 bookstore 元素的所有子节点
/bookstore 选取根元素 bookstore
注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
bookstore/book 选取所有属于 bookstore 的子元素的 book 元素。
//book 选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book 选择所有属于 bookstore 元素的后代的 book 元素,而不管它们位于 bookstore 之下的什么位置。
//@lang 选取所有名为 lang 的属性。

2.谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点,谓语通常被嵌在方括号中。在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

路径表达式 结果
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[.='Harry Potter'] 选取所有 title 节点值为 Harry Potter 的 title 元素。
//title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang='eng'] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.00] 选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]/title 选取所有 bookstore 元素中的 book 元素的 title 元素,且其中的 price 元素的值须大于 35.00。

3.选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

通配符 描述
* 匹配任何元素节点
@* 匹配任何属性节点
node() 匹配任何类型的节点

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式 结果
/bookstore/* 选取 bookstore 元素的所有子节点
//* 选取文档中的所有元素
//title[@*] 选取所有带有属性的 title 元素。

4.选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式 结果
//book/title | //book/price 选取所有 book 元素的 tilte 和 price 元素。
//title | //price 选取所有文档中的 title 和 price 元素。
/bookstore/book/title | //price 选取所有属于 bookstore 元素的 book 元素的 title 元素,以及文档中所有的 price 元素。
分类:HTML/CSS | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 5018

以编程方式编写服务

1.打开 Microsoft Visual Studio 2005 创建一个空项目;
2.添加对System、System.ServiceProcess、System.Configuration.Install的引用;
3.新建一个Windows服务文件Service1.cs,代码如下:

using System;

查看更多...

分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3939

如何:调试 Windows 服务应用程序

由于服务必须从服务控制管理器的上下文中运行,而不是从 Visual Studio 中运行,因此调试服务不像调试其他 Visual Studio 应用程序类型那样简单。若要调试服务,必须首先启动服务,然后将一个调试器附加到正在运行服务的进程中。然后可以使用 Visual Studio 的所有标准调试功能来调试应用程序。

警告 除非知道进程是什么,并且知道附加到进程或可能取消进程所带来的后果,否则不要附加到进程。例如,如果附加到 WinLogon 进程,然后停止调试,系统就会暂停,因为没有 WinLogon,系统无法运行。

只能将调试器附加到正在运行的服务。附加进程会中断服务的当前运行;它并不真正终止或暂停服务的处理。也就是说,如果开始调试时服务正在运行,则在进行调试时,该服务从技术上说仍处于“已启动”状态,但它的处理已挂起。

查看更多...

分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4308

Windows 服务应用程序介绍

Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这些功能使服务非常适合在服务器上使用,每当需要使用不会影响在同一台计算机上工作的其他用户的功能时也适用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。有关服务和 Windows 会话的更多信息,请参见 MSDN Library 的 Platform SDK 文档中的关于服务一节。

通过创建作为服务安装的应用程序,可以轻松地创建服务。例如,假设要监视性能计数器数据并对阈值做出反应。可以编写一个侦听性能计数器数据的 Windows 服务应用程序、部署该应用程序并开始收集和分析数据。

将服务创建为 Microsoft Visual Studio 项目,并在其中定义代码,以控制哪些命令可以发送到服务以及接收到这些命令时采取的操作。可以发送到服务的命令包括启动、暂停、继续和停止该服务;还可以执行自定义命令。

查看更多...

分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3501

ASP.NET借助URLRewriter实现URL重写

使用URL重写可以实现用http://www.mzwu.com/d100.aspx类似的地址来访问http://www.mzwu.com/default.aspx?id=100,这样的好处非常多:一是隐藏了真实路径,提高应用程序的安全性;二是有利于搜索引擎收录;三是便于记忆。下边我们来看看在ASP.NET中怎么实现URL重写:

下载安装URLRewriter,添加引用URLRewriter.dll,在Web.config中配置:

<configuration>

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4127
PORT(主动方式):客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

PASV(被动方式):客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口,然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

FTP仅仅提供了建立在IPv4上进行数据通信的能力,它基于网络地址是32位这一假设。但是,当IPv6出现以后,地址就比32位长许多了。原来对FTP进行的扩展在多协议环境中有时会失败。针对IPv6对FTP再次进行扩展,两个FTP命令PORT和PASV通过扩展后,我们称它们为EPRT和EPSV。

查看更多...

分类:操作系统 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 10809

ASP的URLDecode函数

我们知道,ASP的Server对象有个URLEncode方法可以对地址进行编码,但却没有相应的解码函数,下边的这个函数可以实现对URLEncode的解码:

'================================================
'函数名:URLDecode
'作  用:URL解码

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4622

[私密日志] 私密日志

该日志是私密日志,只有博主或发布者可以查看!
分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1458

MDI开发实例

实现功能:在父窗体中有两个菜单:新建和获取内容,点击新建时新建一个子窗体,点击获取内容时获取当前子窗体内一文本框的内容。

操作步骤:

1.打开Microsoft Visual Studio 2008新建一个Windows窗体应用程序;

查看更多...

分类:Win编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4469