Solaris10与EMCCX3-10c实现FC-SAN实施手册_第1页
Solaris10与EMCCX3-10c实现FC-SAN实施手册_第2页
Solaris10与EMCCX3-10c实现FC-SAN实施手册_第3页
Solaris10与EMCCX3-10c实现FC-SAN实施手册_第4页
Solaris10与EMCCX3-10c实现FC-SAN实施手册_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 Solaris 10与EMC CX3-10c实现FC-SAN实施手册现场背景:服务器3台,2台Sun Fire V490,1台Sun Fire V250。存储为DELL|EMC CX3-10c,配备8TB硬盘,一台Brocade SW200E光纤交换机。目的:实现FC-SAN构架。拓扑图:实施步骤:先完成Dell|EMC CX3-10c初始化,配置两个管理IP,分别为:XX.XX.XX.XX。建立服务器、光纤交换机、存储之间的链路。初始化光纤交换机,配置管理地址:XX.XX.XX.XX在Navisphere Manager管理界面发现链路。在服务器端安装Navisphere agent注册,

2、安装PowerPath多链路管理软件。具体安装操作如下:Navisphere agent的安装与配置先将光盘mount上后,再执行下面的命令:pkgadd -d NAVIAGNT.pkg会出现下述提示信息,按照提示信息选择安装即可。Select the packages that you want to install by doing one of thefollowing:? Enter 1 (to install the host agent)or? Enter 2 (to install CLI) or Enter All (to install both the host agent

3、and CLI)Enter y and y to begin the installation.The installation program looks for any agent configuration filesyou may already have on your system. If the program doesnot find any agent configuration files, then you have finishedinstalling the agent; go to step 10q. If the program does find anyexis

4、ting configuration files, it displays a message like the following:At Least 1 saved config file exists for NavisphereAgent.Please select 1 of the following:1Restore/etc/Navisphere/.Naviagent-config.000120:10592Restore/etc/Navisphere/.Naviagent-config.000121:14083 QuitSelect number 1 - 3.修改agent.conf

5、ig配置文件,主要方法如下:修改/etc/Navisphere/agent.configVi /etc/Navisphere/agent.config 修改内容为:# Navisphere agent.config# # This file is used by Navisphere Agent to configure# site specific values.# All entries in this file have this form:# object value-list# Where object tells what sort of information is to# be

6、 configured, and value-list is a# whitespace-separated list of values to be configured.# Samples, which should be edited, appear below for all# permissible types of objects.# White space (tabs, space, line-feeds,# carriage-returns) and blank lines are ignored;# To continue a line onto the next line,

7、 use as the# last character of that line. The is dropped when# the next line is concatenated to the continued line.# Description specification# # The clarDescr object takes arbitrary text values# intended to describe the agent and its location.#clarDescr Navisphere Agent# The clarContact object take

8、s arbitrary text values# intended to describe who is responsible for the# configured agent, and how to reach them.#clarContact John Smith, 800-555-1212# Device specification.# # The format of device objects for CLARiiON devices# is:# devicedevice-specname description# where the device-specification

9、is the device name to# open to access the CLARiiON device. It can be a# SCSI-2 file name. If this is auto, all attached# arrays with bound LUNs will be automatically# configured. (Currently, dummy arguments are required# for name and description, when using# auto-configuration.) This can NOT be defa

10、ulted.# The name is the per CLARiiON name that can be used to# identify each CLARiiON to the manager application.# The name is REQUIRED and cannot contain spaces (even# if surrounded by quotes). This can NOT be defaulted.# The description is a quoted string that contains a# brief description of the

11、CLARiiON chassis being# managed. It defaults to if not specified, and to# the device name for auto-configuration.# SAMPLES:# device c0t0d0 NAVISPHERE-1 NAVISPHERE-1# automatically detect manageable devicesdevice auto auto# User Specification.# # The format of user objects is# user localUserId# OR# u

12、ser userIdhostname在此处添加存储系统SPA和SPB管理地址即可user HYPERLINK mailto:systemXX.XX.XX.XX systemXX.XX.XX.XX user systemXX.XX.XX.XX# These build a list of users who are allowed to perform# WRITE operations to the CLARiiON devices managed by# this agent. By default, as specified below, only root# on this machin

13、e has WRITE access. Others can be# granted access by including their login name and host# which they can access from. A null list prevents# anyone, including admin, from having write access. In# order to get write access, this file would have to be# modified and the Agent stopped and restarted to# r

14、e-read the configuration file, or an appropriate# remote configuration file would have to be sent to the# agent from an already-priviledged user.user root # only on this machine#user sbluepicasso # individual user sblue on# host picasso#user lgreenhannibal # individual user lgreen on# host hannibal#

15、 Poll specification# # The poll object takes a numerical count of seconds.# This specifies how often the agent solicits# information from the array, rather than using cached# information. The minimum is 10.#poll 60# Eventlog specification# # The eventlog object takes a numerical count of log# entrie

16、s.# This defines the maximum number of SP log events# received by the agent on startup, and received by# clients per poll. A value of 0 causes the devices# entire log to be read at startup. A minimum of 100# events will be read on serial, and 2048 on fibre,# overriding any lower value configured bel

17、ow.#eventlog 100# Baud Rate specification# # If the agent is using a serial port to manage a# device, the next entry can specify either 9600 baud# or 19200 baud.#baud 9600# end of configuration file#保存配置文件,然后可以启动/停止agent服务。命令如下:bash3.00#/etc/init.d/agent stopbash3.00#/etc/init.d/agent start如果安装配置正常,

18、启动agent服务后在Navisphere Manager管理界面中的Connective中会看到链路状态register为yes。如register显示为no,可以考虑重启服务器或者重启agent服务,或者在Navisphere Manager界面中进行手动注册也可以。注册完成后会在链路状态中显示主机名称等信息。PowerPath的安装与注册PowerPath的安装1、Mount CDROM2、bash3.00# mkdir /unload3、bash3.00#cd /unload4、bash3.00#cp /. 从光盘将安装文件拷贝到新建的目录下面。5、bash3.00# gunzip 解

19、压缩文件6、bash3.00# tar -xvf 解压缩文件7、bash3.00#pkgadd d . 安装PowerPath按照下述提示操作:SPARC host:The following packages are available:EMCpower EMC PowerPath(sparc) 5.2.x_bxxxSelect package(s) you wish to process (or all toprocess all packages). (default: all) ?,?,q:x86 (i386) host:The following packages are avail

20、able:EMCpower EMC PowerPath(i386) 5.2.x_bxxxSelect package(s) you wish to process (or all toprocess all packages). (default: all) ?,?,q:Enter 1 and press ENTER. Enter package base directory (default: /opt):Press ENTER to accept the default base directory (/opt), or type thepath to an alternate base

21、directory and press ENTER.This package contains scripts which will be executedwith super-user permission during the process ofinstalling this package.Do you want to continue with the installation of y,n,?Enter y and press ENTER.Installation of was successful.8、安装完成后需要进行PowerPath的注册注册方法如下:bash3.00#/e

22、tc/emcpreg -installYou see the following output:= EMC PowerPath Registration =Do you have a new registration key or keys to enter? nType y and press ENTER.You see the following output:Enter the registration key(s) for your product(s),one per line, pressing Enter after each key.After typing all keys,

23、 press Enter again.Key (Enter if done):Enter the PowerPath registration key and press ENTER. You can alsoadd keys for other technologies, such as PowerPath MigrationEnabler or PowerPath Encryption with RSA.If you entered a valid key, you see the following output:1 key(s) successfully added.Key succe

24、ssfully installed.Key (Enter if done):Press ENTER. You see the following output if you entered one key:1 key(s) successfully registered.在PowerPath软件安装注册完成后重启服务器,输入下述命令可以看到服务器与存在之间的两条链路:bash3.00#powermt display dev=all会显示链路情况。还需要将Solaris主机的MPxIO功能关闭。(主要是由于Solaris自带的MPxIO功能与PowerPath的多路径功能相冲突)具体修改文件如下

25、:修改/kernel/drv/fp.conf,修改内容如下:mpxio-disable=yes修改/kernel/drv/scsi_vhci.conf,修改内容如下:mpxio-disable=yes修改完成后,运行如下命令:powermt display dev=all powermt check (Choose A for all. Clear the dead paths.) devfsadm C (Scan the SCSI bus.) powercf -q (Rebuild the logical link layer.) powermt config (Bring the devi

26、ce pathsinto PowerPath control.) powermt save (Save the current configuration.)完成配置保存等工作后PowerPath软件即可正常使用。存储建立RAID Group,Storage Group,将服务器与LUN映射关系对应上。服务器端识别存储,格式化硬盘以及做文件系统。具体操作如下:sh-3.00# formatSearching for disks.doneAVAILABLE DISK SELECTIONS: 0. c0t0d0 /pci1d,700000/scsi4/sd0,0 1. c0t8d0 /pci1d,

27、700000/scsi4/sd8,0 2. c3t0d0 /pci1d,700000/QLGC,qlc2/sd0,0 3. c3t1d0 /pci1d,700000/QLGC,qlc2/sd1,0 4. emcpower0a /pseudo/emcp0Specify disk (enter its number): 4selecting emcpower0adisk formattedFORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partiti

28、on table current - describe the current disk format - format and analyze the disk repair - repair a defective sector label - write label to the disk analyze - surface analysis defect - defect list management backup - search for backup labels verify - read and display labels inquiry - show vendor, pr

29、oduct and revision volname - set 8-character volume name ! - execute , then return quitformat pPARTITION MENU: 0 - change 0 partition 1 - change 1 partition 2 - change 2 partition 3 - change 3 partition 4 - change 4 partition 5 - change 5 partition 6 - change 6 partition select - select a predefined

30、 table modify - modify a predefined partition table name - name the current table print - display the current table label - write partition map and label to the disk ! - execute , then return quitpartition pCurrent partition table (original):Total disk sectors available: 3076627422 + 16384 (reserved

31、 sectors)Part Tag Flag First Sector Size Last Sector0 root wm 34 128.00MB 262177 1 swap wu 262178 128.00MB 524321 2 unassigned wm 0 0 0 3 unassigned wm 0 0 0 4 unassigned wm 0 0 0 5 unassigned wm 0 0 0 6 usr wm 524322 1.43TB 3076627421 8 reserved wm 3076627422 8.00MB 3076643805 partition labelReady

32、to label disk, continue? ypartition qFORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partition table current - describe the current disk format - format and analyze the disk repair - repair a defective sector label - write label to the disk analyze

33、- surface analysis defect - defect list management backup - search for backup labels verify - read and display labels inquiry - show vendor, product and revision volname - set 8-character volume name ! - execute , then return quitformat q创建文件系统,Solaris默认格式bash-3.00# newfs /dev/rdsk/emcpower0g newfs:

34、 建构新的文件系统 /dev/rdsk/ emcpower0g: (y/n)? y警告:最后一个未分配柱面中的 1104 扇区/dev/rdsk/ emcpower0g: 在 500668 磁道上,48 扇区的 128 柱面的 3076103088 扇区1502003.5MB 在 3502 柱面群组 (143 c/g, 429.00MB/g, 448 i/g)超块 (fsck -F ufs -o b=#) 备份在:32, 878752, 1757472, 2636192, 3514912, 4393632, 5272352, 6151072, 7029792, 7908512,初始化柱面组:最

35、后 10 个柱面组的超级块备份位置: 3068047904, 3068926624, 3069805344, 3070684064, 3071562784, 3072441504, 3073320224, 3074198944, 3075077664, 3075956384,文件系统做完。挂载硬盘bash-3.00# mkdir emcdiskbash-3.00# mount /dev/dsk/ emcpower0g /mnt/emcdisk/其它链路也如上述操作,完成后运行下面命令可以看到磁盘大小以及利用情况。bash-3.00# df -kh文件系统 大小 用了 可用 容量 挂接在/dev

36、/dsk/c0t0d0s0 32G 1.1G 30G 4% /devices 0K 0K 0K 0% /devicesctfs 0K 0K 0K 0% /system/contractproc 0K 0K 0K 0% /procmnttab 0K 0K 0K 0% /etc/mnttabswap 2.1G 1.0M 2.1G 1% /etc/svc/volatileobjfs 0K 0K 0K 0% /system/object/dev/dsk/c0t0d0s3 23G 4.3G 19G 19% /usrfd 0K 0K 0K 0% /dev/fd/dev/dsk/c0t8d0s7 67G 7

37、43M 66G 2% /varswap 2.1G 312K 2.1G 1% /tmpswap 2.1G 24K 2.1G 1% /var/run/dev/dsk/c0t0d0s6 1.2G 83M 1.1G 7% /temp/dev/dsk/c0t0d0s7 10G 1.9G 8.2G 19% /export/home/dev/dsk/emcpower0g 1.4T 64M 1.4T 1% /mnt/emcdisk硬盘自动挂载,修改配置文件,配置文件在/etc/vfstab具体修改参考下面文档:bash-3.00# vi /etc/vfstab#device device mount FS f

38、sck mount mount#to mount to fsck point type pass at boot options#fd - /dev/fd fd - no -/proc - /proc proc - no -/dev/dsk/c0t0d0s1 - - swap - no -/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no -/dev/dsk/c0t0d0s3 /dev/rdsk/c0t0d0s3 /usr ufs 1 no -/dev/dsk/c0t8d0s7 /dev/rdsk/c0t8d0s7 /var ufs 1 no -/d

39、ev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7 /export/home ufs 2 yes -/dev/dsk/c0t0d0s6 /dev/rdsk/c0t0d0s6 /temp ufs 2 yes -/devices - /devices devfs - no -ctfs - /system/contract ctfs - no -objfs - /system/object objfs - no -swap - /tmp tmpfs - yes -/dev/dsk/emcpower0g /dev/rdsk/emcpower0g /mnt/emcdisk ufs 1

40、yes -光纤交换机配置zone光纤交换机主要配置管理ip地址,zone等,在初始化时已经完成了ip地址的配置,配置zone的方法如下:SW200E:admin switchshow 查看交换机信息switchName: SW200EswitchType: 34.0switchState: Online switchMode: NativeswitchRole: PrincipalswitchDomain: 1switchId: fffc01switchWwn: 10:00:00:05:1e:5b:f7:3ezoning: ON (XXXX)switchBeacon: OFFArea Port

41、 Media Speed State Proto= 0 0 id N4 Online F-Port 21:00:00:1b:32:08:2a:d4 1 1 id N4 Online F-Port 50:06:01:69:41:e0:b2:5f 2 2 id N4 Online F-Port 50:06:01:61:41:e0:b2:5f 3 3 id N4 Online F-Port 21:00:00:e0:8b:8f:57:b3 4 4 id N4 Online F-Port 21:00:00:e0:8b:8f:a8:b3 5 5 id N4 No_Light 6 6 id N4 No_Li

42、ght 7 7 id N4 No_Light 8 8 - N4 No_Module (No POD License) Disabled 9 9 - N4 No_Module (No POD License) Disabled 10 10 - N4 No_Module (No POD License) Disabled 11 11 - N4 No_Module (No POD License) Disabled 12 12 - N4 No_Module (No POD License) Disabled 13 13 - N4 No_Module (No POD License) Disabled

43、 14 14 - N4 No_Module (No POD License) Disabled 15 15 - N4 No_Module (No POD License) DisabledSW200E:admin alicreate “SPA_0”,” 50:06:01:69:41:e0:b2:5f” /创建WWN的别名SW200E:admin alicreate “SPB_0”,” 50:06:01:61:41:e0:b2:5f”SW200E:admin alicreate “mailbak”,” 21:00:00:e0:8b:8f:57:b3”SW200E:admin alicreate

44、“student_mail”,” 21:00:00:1b:32:08:2a:d4”SW200E:admin alicreate “v490”,” 21:00:00:e0:8b:8f:a8:b3”SW200E:admin zonecreate “bak”,” SPA_0; SPB_0; mailbak” /创建zoneSW200E:admin zonecreate “mail”,” SPA_0; SPB_0; v490”SW200E:admin zonecreate “st_mail”,” SPA_0; SPB_0; student_mail”SW200E:admin cfgcreate XXX

45、X, bak; mail ;st_mail /创建cfgSW200E:admin cfgsave “XXXX” /保存cfgSW200E:admin cfgenable “XXXX” /enable cfg配置完成。可以通过switchshow、fabricshow、zoneshow、cfgshow等查看配置。一定要注意创建别名时WWN的准确性。其它注意事项以及特殊情况处理:PowerPath链路不正常情况下的处理PowerPath链路不正常主要有几种情况:链路识别不了解决办法:重启服务器。或者使用如下命令:bash3.00#powermt checkbash3.00#powermt rest

46、ore扫描通道bash3.00#powercf q bash3.00#powermt configbash3.00#powermt save在Navisphere Manager上检查链路发现情况,如发现不了,进行扫描,检查HBA卡状态,如果状态不对,需要安装HBA卡驱动。链路数量状态不对当链路数量状态不对时可以使用A中所提到的命令进行链路通道扫描,同时结合Navisphere Manager 检查链路情况,可以运行CTRL+ALT+SHIFT+F12进入工程师配置模式,密码是messner.检查链路以及Storage Group主机配置信息是否勾选。同时也可以检查光纤交换机配置信息。修改So

47、laris配置文件系统不能启动的问题在修改vfstab等文件造成系统启动不起来,需要采用单用户模式将配置文件修改后再重启即可。主要方法如下:1插入Solaris 10光盘2利用光盘启动到单用户模式ok boot cdrom -s3装配/(root)文件系统到/a目录,以允许对磁盘上的文件系统的访问。# mount /dev/dsk/c0t0d0s0 /a4设置并且输出TERM变量允许vi编辑器进行工作# TERM=sun# export TERM5编辑/etc/vfstab文件并且纠正问题。然后退出保存文件# vi /a/etc/vfstab:wq!6卸载文件系统# cd /# umount

48、/a7重新启动系统# reboot附录资料:不需要的可以自行删除 libxml2应用实例Libxml2 是一个xml的c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持c语言版以外,还支持c+、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、Linux、Solaris、MacOsX等平台上运行。功能还是相当强大的,相信满足一般用户需求没有任何问题。二、 Libxml2安装:一般如果在安装系统的时候选中了所有开发库和开发工具的话(Fedora Core系列下),应该不用安装,下面介绍一下手动安装: 1) 从xml

49、soft站点或ftp()站点下载libxml压缩包(libxml2-xxxx.tar.gz)2) 对压缩包进行解压缩 tar xvzf libxml2-xxxx.tar.gz3) 进入解压缩后的文件夹中运行 ./configure -prefix /home/user/myxml/xmlinst(此处为待安装的路径)或者直接使用 ./configure make make install 4) 添加路径 export PATH=/home/user/myxml/xmlinst/bin:$PATH 说明:为了结构清晰,最好将libxml2不安装在解压目录中。安装完成后就可以使用简单的代码解析XM

50、L文件,包括本地和远程的文件,但是在编码上有一些问题。Libxml默认只支持UTF8的编码,无论输入输出都是UTF-8,所以如果你解析完一个XML得到的结果都是UTF8的,如果需要输出GB2312或者其它编码,需要ICONV来做转码(生成UTF8编码的文件也可以用它做),如果系统中没有安装iconv的话,需要安装libiconv。 1) 下载libiconv压缩包(例如libiconv-1.11.tar.gz) 2) 对压缩包进行解压缩tar xvzf libiconv-1.11.tar.gz 3) 进入解压缩后的文件夹中运行 ./configure make make install三、关于

51、XML:在开始研究 Libxml2 库之前,先了解一下XML的相关基础。XML 是一种基于文本的格式,它可用来创建能够通过各种语言和平台访问的结构化数据。它包括一系列类似 HTML 的标记,并以树型结构来对这些标记进行排列。例如,可参见清单 1 中介绍的简单文档。为了更清楚地显示 XML 的一般概念,下面是一个简化的XML文件。清单 1. 一个简单的 XML 文件 root delete 10清单 1 中的第一行是 XML 声明,它告诉负责处理 XML 的应用程序,即解析器,将要处理的 XML 的版本。大部分的文件使用版本 1.0 编写,但也有少量的版本 1.1 的文件。它还定义了所使用的编码

52、。大部分文件使用 UTF-8,但是,XML 设计用来集成各种语言中的数据,包括那些不使用英语字母的语言。接下来出现的是元素。一个元素以开始标记 开始(如 ),并以结束标记 结束(如 ),其中使用斜线 (/) 来区别于开始标记。元素是 Node 的一种类型。XML 文档对象模型 (DOM) 定义了几种不同的 Nodes 类型,包括:Elements(如 files 或者 age)Attributes(如 units)Text(如 root 或者 10)元素可以具有子节点。例如,age 元素有一个子元素,即文本节点 10。XML 解析器可以利用这种父子结构来遍历文档,甚至修改文档的结构或内容。Li

53、bXML2 是这样的解析器中的其中一种,并且文中的示例应用程序正是使用这种结构来实现该目的。对于各种不同的环境,有许多不同的解析器和库。LibXML2 是用于 UNIX 环境的解析器和库中最好的一种,并且经过扩展,它提供了对几种脚本语言的支持,如 Perl 和 Python。四、Libxml2中的数据类型和函数一个函数库中可能有几百种数据类型以及几千个函数,但是记住大师的话,90%的功能都是由30%的内容提供的。对于libxml2,我认为搞懂以下的数据类型和函数就足够了。1)内部字符类型xmlCharxmlChar是Libxml2中的字符类型,库中所有字符、字符串都是基于这个数据类型。事实上它

54、的定义是:xmlstring.htypedef unsigned char xmlChar;使用unsigned char作为内部字符格式是考虑到它能很好适应UTF-8编码,而UTF-8编码正是libxml2的内部编码,其它格式的编码要转换为这个编码才能在libxml2中使用。还经常可以看到使用xmlChar*作为字符串类型,很多函数会返回一个动态分配内存的xmlChar*变量,使用这样的函数时记得要手动删除内存。2) xmlChar相关函数如同标准c中的char类型一样,xmlChar也有动态内存分配、字符串操作等相关函数。例如xmlMalloc是动态分配内存的函数;xmlFree是配套的释

55、放内存函数;xmlStrcmp是字符串比较函数等等。基本上xmlChar字符串相关函数都在xmlstring.h中定义;而动态内存分配函数在xmlmemory.h中定义。3)xmlChar*与其它类型之间的转换另外要注意,因为总是要在xmlChar*和char*之间进行类型转换,所以定义了一个宏BAD_CAST,其定义如下:xmlstring.h#define BAD_CAST (xmlChar *)原则上来说,unsigned char和char之间进行强制类型转换是没有问题的。4)文档类型xmlDoc、指针xmlDocPtrxmlDoc是一个struct,保存了一个xml的相关信息,例如文

56、件名、文档类型、子节点等等;xmlDocPtr等于xmlDoc*,它搞成这个样子总让人以为是智能指针,其实不是,要手动删除的。xmlNewDoc函数创建一个新的文档指针。xmlParseFile函数以默认方式读入一个UTF-8格式的文档,并返回文档指针。xmlReadFile函数读入一个带有某种编码的xml文档,并返回文档指针;细节见libxml2参考手册。xmlFreeDoc释放文档指针。特别注意,当你调用xmlFreeDoc时,该文档所有包含的节点内存都被释放,所以一般来说不需要手动调用xmlFreeNode或者xmlFreeNodeList来释放动态分配的节点内存,除非你把该节点从文档中

57、移除了。一般来说,一个文档中所有节点都应该动态分配,然后加入文档,最后调用xmlFreeDoc一次释放所有节点申请的动态内存,这也是为什么我们很少看见xmlNodeFree的原因。xmlSaveFile将文档以默认方式存入一个文件。xmlSaveFormatFileEnc可将文档以某种编码/格式存入一个文件中。5)节点类型xmlNode、指针xmlNodePtr节点应该是xml中最重要的元素了,xmlNode代表了xml文档中的一个节点,实现为一个struct,内容很丰富:tree.htypedef struct _xmlNode xmlNode;typedef xmlNode *xmlNod

58、ePtr;struct _xmlNode void *_private;/* application data */ xmlElementType type; /* type number, must be second ! */ const xmlChar *name; /* the name of the node, or the entity */ struct _xmlNode *children;/* parent-childs link */ struct _xmlNode *last; /* last child link */ struct _xmlNode *parent;/

59、* child-parent link */ struct _xmlNode *next; /* next sibling link*/ struct _xmlNode *prev; /* previous sibling link*/ struct _xmlDoc*doc;/* the containing document */ /* End of common part */ xmlNs *ns; /* pointer to the associated namespace */ xmlChar *content; /* the content */ struct _xmlAttr *p

60、roperties;/* properties list */ xmlNs *nsDef; /* namespace definitions on this node */ void *psvi;/* for type/PSVI informations */ unsigned short line; /* line number */ unsigned short extra;/* extra data for XPath/XSLT */;可以看到,节点之间是以链表和树两种方式同时组织起来的,next和prev指针可以组成链表,而parent和children可以组织为树。同时还有以下重要元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论