1、solaris 9 上添加打印机solaris 上添加打印机一、判断系统是否支持该打印机1. ls /usr/share/lib/terminfo 如果不存在该打印机,需要根据打印机机型安装相应驱动。二、1. 连上打印机(插线的时候不要开打印机),开机,打印机没有复位 2. touch /reconfigure, init 6 3. 系统重启,并口复位,打印机状态灯正常 4. 使用Admintool(这个熟悉所以还用它)添加打印机(local printer) 5. 打印端口改为/dev/ecpp0, 打印机类型改为 epson2500, printer name注意must be a tex
2、t string composed of uppercase or lowercase alphabetical characters (A-Z), digits (0-9), minus signs, or underscores. 6. OK添加三、如果要在ebs上应用该打印机需要在ebs上对打印机进行相应设置。(见ebs模块)四、常用命令1、admintool2、lp -d hp1 file.ps将一个postscript作业提交到本地打印机hp1上lp file.txt 打印文本文件3、cancel hp1-212取消作业hp1-2124、lpadmin 打印机的管理工具5、lpsta
3、t用于验证打印机状态。如何启动 Solaris Print Manager1. 验证是否满足以下先决条件。要使用 Solaris Print Manager,必须满足以下要求: o 具有位映射显示器,如 Sun 工作站附带的标准显示器。Solaris Print Manager 只能在具有控制台(位映射屏幕)的系统上使用。o 运行的是 X 窗口系统(如 GNOME 桌面或 CDE 环境),或者在运行 xhost 环境的系统上使用远程显示功能。o 以超级用户身份登录或承担打印服务器上的等效角色,以安装连接的打印机或网络打印机,或者在打印客户机上添加对打印机的访问。o 具有管理 LDAP、NIS
4、或 NIS+ 数据库所需的访问权限。 如果名称服务是 LDAP,则必须具有以下项。 目录中打印机管理员的标识名 (distinguished name, DN) 和口令。 承载管理域的 LDAP 服务器的名称或 IP 地址。此信息通常会自动显示并选定。 如果名称服务是 NIS,则必须具有 NIS 主服务器的超级用户口令。 如果名称服务是 NIS+,则可能需要完成以下步骤。0. 以超级用户身份登录到 NIS+ 主服务器。1. 识别拥有打印机表的组。# niscat -o printers.org_dir.domain- . . . Group: admin.domain-2. 如有必要,请将运行
5、 Solaris Print Manager 的系统添加到授权更新 printers.org_dir. 文件的 NIS+ 管理组。# nisgrpadm -a admin.domain- hostname3. 以超级用户身份登录到运行 Solaris Print Manager 的系统。您的 NIS+ 配置可能需要运行 /usr/bin/keylogin 命令。有关更多信息,请参见 keylogin(1) 手册页。o 安装 SUNWppm 软件包。# pkginfo | grep SUNWppmsystem SUNWppm Solaris Print Manager2. 使用以下方法之一启动
6、Solaris Print Manager:o 从“CDE 工作区”菜单的“工具”选项中选择“打印机管理员”。 o 从 CDE 前面板中选择“应用程序”菜单。然后,单击应用程序管理器的“系统管理”窗口中的“打印机管理员”图标。o 键入以下命令。# /usr/sadm/admin/bin/printmgr &o “选择命名服务”窗口会覆盖 Solaris Print Manager 的主窗口。3.4. 注 5. 如果 Solaris Print Manager 无法从 CDE 菜单或命令行启动,请检查以下内容: o 超级用户 (root) 可能没有连接到本地系统或远程系统上 X 服务器进程的权限
7、。在这种情况下,请键入以下内容:$ ssh -X hostname$ su(Enter roots password)# /usr/sadm/admin/bin/printmgr &o 重新启动 Solaris Print Manager 之前,将 hostname 替换为本地系统名称或远程系统名称。o 验证是否在本地系统或远程系统上安装了 SUNWppm 软件包。$ pkginfo | grep SUNWppm6.7. 从“选择命名服务”窗口中选择在您的网络中使用的名称服务。可选择的名称服务包括:LDAP、NIS、NIS+ 或 files。 8. 检查域名是否正确。 成功装入名称服务后,将显
8、示 Solaris Print Manager 主菜单。 添加网络打印机简介网络打印机是指直接连接到网络的硬件设备。可以从打印服务器访问此打印机,而不必通过电缆将打印机实际连接到打印服务器。网络打印机具有其自己的系统名称和 IP 地址。注意 不能在不使用队列配置的情况下在打印服务器上配置网络打印机,否则会导致打印机配置错误。通过选择“新的网络打印机”选项,可以使用 Solaris Print Manager 正确配置网络打印机。或者,可以使用 lpadmin 命令正确配置网络打印机。有关如何使用 lpadmin 命令配置网络打印机的更多信息,请参见如何使用 LP 打印服务命令添加新的网络打印机
9、。请注意,不应使用 lpadmin -p queue-name -s printer-name 命令或 Solaris Print Manager 的“添加对打印机的访问”选项添加网络打印机。这些方法应分别单独使用,以指向远程打印服务器上已经存在的队列。打印服务器可提供以下功能: 排队功能 过滤 对网络打印机的打印管理直接打印到网络打印机会导致打印机配置错误,从而可能导致许多问题。此外,作业选项(如份数、成组传送页的使用或停用以及过滤)将丢失。网络打印机可能会使用需要供应商提供的打印程序的一个或多个特殊协议。用于设置供应商提供的打印程序的过程可能有所不同。如果打印机未附带供应商提供的支持,则大
10、多数设备都可以使用 Solaris 网络打印机支持。如有可能,请使用打印机供应商提供的软件。供应商可能会提供 SVR4 打印机接口脚本以替换标准打印机接口脚本。如果是这样,则该 SVR4 接口脚本会调用供应商提供的打印程序,将作业发送到打印机。如果不是这样,则需要修改标准接口脚本,以调用供应商提供的打印程序。为此,请编辑标准接口脚本的每打印机副本,以调用供应商提供的打印程序。以下是网络打印机配置中使用的术语: 打印服务器对打印机作业进行假脱机和调度的系统。打印服务器是指配置打印机的系统。 打印机承载设备为不支持网络的打印机提供网络打印机支持的供应商提供的软件和硬件。打印机承载设备和连接到该设备
11、的一台或多台打印机组合在一起即组成了网络打印机。 打印机节点物理打印机或打印机承载设备。当网络支持驻留在物理打印机中时,打印机节点是物理打印机。当使用外部盒提供网络接口时,打印机节点是打印机承载设备。打印机节点名称是与 IP 地址一起提供的系统名称。可以选择此名称,它没有缺省要求或供应商要求。与所有节点一样,打印机节点的名称也必须是唯一的。 打印机名称使用任何打印机命令时在命令行上键入的名称。可以在进行打印机配置时选择打印机名称。任何一个物理打印机都可以具有多个打印机名称或队列名称。每个名称都提供对该打印机的访问。 目标名称或网络打印机访问名称打印机子系统访问打印机所用的打印机节点端口的内部名
12、称。该访问名称是打印机节点的名称,或者是带有打印机供应商端口标识的打印机节点名称。任何打印机供应商端口标识都是在打印机供应商文档中显式定义的。该名称是特定于打印机的。如果该打印机是指打印机承载设备和打印机,则端口标识记录在打印机承载设备文档中,并采用以下格式:printer-node-name printer-node-name:port-designation 协议用于与打印机进行通信的线上协议。打印机供应商的文档提供了有关要选择的协议的信息。网络打印机支持提供了 BSD 打印协议以及原始 TCP。 超时或重试间隔超时种子数,表示连接到打印机的两次尝试之间等待的秒数。此种子数是在两次连接尝试
13、之间等待的最短时间。当失败连接增加时,种子数也会增加。在连接到打印机一再失败后,将向用户返回一条消息,请求进行可能的人为干预。在连接成功或者作业拥有者者取消作业之前,将继续尝试重新连接。打印机供应商为网络打印机提供的软件网络打印机通常具有打印机供应商提供的软件支持。如果打印机具有打印机供应商提供的软件,请尽可能使用打印机供应商软件。该软件旨在支持打印机的属性,并可以充分利用打印机功能。请阅读打印机供应商文档,以安装和配置打印机,从而使该打印机可以处理 LP 打印服务。Sun 对网络打印机的支持如果网络打印机供应商不提供软件支持,则可使用 Sun 提供的软件。该软件提供对网络打印机的通用支持,但
14、不能提供对所有可能的打印机属性的完全访问。有关如何添加网络打印机的一般讨论,请参见第3章,设置打印机(任务)。以下是对使用 Sun 提供的软件管理打印机的讨论。调用网络打印机支持网络打印机的软件支持是通过网络接口脚本 netstandard 调用的。使用此脚本配置网络打印机会导致调用网络打印机支持模块。以下是使用网络支持配置打印机的命令。lpadmin -p printer-name -m netstandard 选择打印协议打印子系统使用 BSD 打印协议和原始 TCP 与打印机进行通信。打印机供应商文档提供了有关要使用哪个协议的信息。通常,TCP 协议在打印机中更常用。请键入以下命令以选择
15、协议:lpadmin -p printer-name -o protocol=bsd或lpadmin -p printer-name -o protocol=tcp如果选择的协议是 BSD 打印协议,则可以进一步选择将控制文件发送到打印机的顺序。一些打印机要求先发送控制文件,再发送数据文件。其他打印机则正好相反。要了解此信息,请参见打印机供应商文档。缺省情况下,首先发送控制文件。请键入以下命令以选择顺序:lpadmin -p printer-name -o bsdctrl=first或lpadmin -p printer-name -o bsdctrl=last选择打印机节点名称选择打印机节点
16、名称。与网络上的任何节点一样,此名称也必须是唯一的。打印机节点名称与打印机的 IP 地址相关联。选择目标名称(也称为网络打印机访问名称)打印子系统需要打印机的访问信息。子系统在与打印机建立网络连接时使用目标名称。使用 lpadmin 命令可以为打印子系统提供此名称。然后,此名称将成为打印机配置数据库的一部分。打印机访问名称是打印机节点的名称,该名称有时由端口名称限定。端口标识会因打印机供应商的不同而异。可以在打印机文档中找到有关端口标识的信息。以下是打印机访问名称的格式:printer-node-name:port-designation 示例 34 带有端口标识(数字)的目标名称(或网络打印
17、机访问名称)使用 TCP 的通用端口标识是 9100。如果打印机节点名称是 pn1,并且打印机供应商将端口定义为 9100,则打印机访问名称是 pn1:9100。要在这种情况下配置打印机,请使用以下命令:lpadmin -p printer_name -o dest=pn1:9100示例 35 带有 BSD 端口标识(名称)的目标名称(或网络打印机访问名称)使用 BSD 协议时,端口标识可能不是一个数字,而是由打印机供应商定义的某个名称,例如:xxx_parallel_1。如果打印机节点名称是 cardboard,则打印机访问名称是 cardboard:xxx_parallel_1。要在这种情
18、况下配置打印机,请使用以下命令:lpadmin -p printer-name -o dest=cardboard:xxx_parallel_1示例 36 不带端口标识的目标名称(或网络打印机访问名称)如果没有端口标识,并且打印机节点名称是 newspaper,则打印机访问名称即是打印机节点名称:newspaper。要在这种情况下配置打印机,请使用以下命令:lpadmin -p printer-name -o dest=newspaper设置超时值借助超时选项,用户可以选择在连接到打印机的连续尝试之间等待的时间(以秒为单位)。一些打印机的预热时间很长,因此建议使用较大的超时值。缺省值是 10
19、秒。超时值对打印过程的成功或失败没有影响。该值是软件用作初始超时计数的种子值。如果一再失败,此计数将会增加。当连接到打印机的尝试一再失败时,将向假脱机程序发送一条消息。此消息提醒用户可能需要进行干预。故障可能是打印机被关闭或打印机缺纸等任何情况。如果过于频繁地生成这些消息(例如在预热打印机时),则增加超时值将消除伪消息。可以通过试验找出最佳的超时值。请键入以下命令以设置超时值:lpadmin -p printer-name -o timeout=n管理网络打印机访问每台网络打印机都应该仅有一台提供对打印机的访问的服务器。通过此限制,服务器可以管理对打印机的访问并使作业保持连贯。 网络打印机的缺
20、省设备是 /dev/null。当打印机仅有一个队列时,此设备已足够。如果需要多个队列,则将该设备设置为一个文件。通过此设置,打印系统可以限制跨队列对打印机的访问。以下命令将创建一个设备文件,并将其配置为网络打印机设备。touch /path/filenamechmod 600 /path/filenamelpadmin -p printer-name -v /path/filename下面举例说明如何创建名为 devtreedown 的设备文件。# touch /var/tmp/devtreedown# chmod 600 /var/tmp/devtreedown# lpadmin -p tr
21、eedown -v /var/tmp/devtreedown如何使用打印机供应商提供的工具添加网络打印机1. 将打印机连接到网络。打开打印机的电源。有关硬件交换机和布线要求的信息,请参阅打印机供应商的安装文档。获取 IP 地址并选择打印机节点的名称。此方法等效于将任何节点添加到网络。2. 遵照打印机供应商的说明添加网络打印机。使用打印机供应商的说明配置网络打印机。这些说明特定于供应商和打印机。3. 添加对新打印机的客户机访问。在添加打印机后,为打印客户机创建对打印机的访问。有关更多信息,请参见 设置打印客户机。4. 完成任何可选的任务。设置网络打印机时,可能需要完成多个可选任务。有关这些任务的
22、链接,请参见设置打印(任务图)。如何使用 Solaris Print Manager 添加新的网络打印机通过 Solaris Print Manager 中的使用 PPD 文件缺省选项,可以在添加新打印机时选择打印机生产商、型号和驱动程序。有关此功能的更多信息,请参见扩展的打印机支持。此过程说明如何在选中“使用 PPD 文件”缺省选项的情况下,使用 Solaris Print Manager 添加新的网络打印机。要在不使用 PPD 文件的情况下添加新的网络打印机,必须首先在“打印管理器”下拉式菜单中取消选中此选项。1. 选择要成为打印服务器的系统。2. 将打印机连接到网络。打开打印机的电源。有
23、关硬件交换机和布线要求的信息,请参阅打印机供应商的安装文档。 3. 在打印服务器上启动 Solaris Print Manager。有关说明,请参见如何启动 Solaris Print Manager。4. 从“打印机”菜单中选择“新的网络打印机”。此时会显示“新的网络打印机”窗口。5. 使用相应的信息填写必需字段。如果需要填写字段的信息,请单击“帮助”按钮。例如,要使用 PPD 文件添加新的网络打印机,请在以下字段中提供相应的信息:Printer Name:Description:Printer Make:Printer Model:Printer Driver:Fault Notifica
24、tion:Destination:Protocol:Options:Default PrinterAlways Use BannerUser Access List:“打印机服务器”字段由 Solaris Print Manager 填写。要在不使用 PPD 文件的情况下添加新的网络打印机,请在以下字段中提供相应的信息:Printer Name:Description:Printer Type:File Contents:Fault Notification:destination:Protocol:Options:Default PrinterAlways Use BannerUser Ac
25、cess List:“打印机服务器”字段由 Solaris Print Manager 填写。6. 单击“确定”。7. 验证是否已安装了打印机。在 Solaris Print Manager 主窗口中检查新的打印机项。 8. 验证打印机是否可以打印请求。$ lp -d printer-name filename9. 退出 Solaris Print Manager。从“打印管理器”菜单中选择“退出”。如何使用 LP 打印服务命令添加新的网络打印机此过程介绍如何通过此发行版中提供的扩展的打印机支持来添加新的网络打印机。此过程后面有两个示例。第一个示例说明如何通过 lp 命令使用 PPD 文件添加
26、新的网络打印机。第二个示例说明如何在不使用 PPD 文件的情况下通过 lp 命令添加新的网络打印机。 以下步骤是使用网络打印机支持软件设置网络打印机所必需的。如果打印机未附带供应商提供的软件,则应使用此软件。有关使用 PPD 文件添加新的网络打印机或修改现有的网络打印机的概述信息,请参见打印方面的新增功能。1. 将打印机连接到网络,然后打开打印机的电源。有关硬件交换机和布线要求的信息,请参阅打印机供应商的安装文档。获取 IP 地址并选择打印机节点的名称。此步骤等效于将任何节点添加到网络。2. 收集使用 PPD 文件配置新的网络打印机所需的信息。o 打印机名称和端口设备o 网络打印机访问名称o
27、协议o 超时o 文件内容类型o PPD 文件要确定 PPD 文件,请首先定义打印机生产商、打印机型号和打印机将使用的驱动程序。有关更多信息,请参见添加网络打印机简介中介绍的术语。3. 定义打印机名称以及打印机将使用的端口设备、文件内容类型和 PPD 文件。使用 PPD 文件时,文件内容类型通常为 PostScript。. 指定打印机将使用的打印机名称和端口设备。# lpadmin -p printer-name -v /dev/nulla. 要使用的设备是 /dev/null。b. 指定打印机将使用的接口脚本。# lpadmin -p printer-name -m netstandard_f
28、oomatic c. 网络打印机的支持软件附带的接口脚本是 /usr/lib/lp/model/netstandard_foomatic。d. 指定打印机将使用的文件内容类型和 PPD 文件。使用 PPD 文件时,文件内容类型通常为 PostScript。# lpadmin -p printer-name -I content-type -n /path/ppdfile指定的 PPD 文件位于 /path 目录中。注 如果 /path 并非系统上的 PPD 文件库,请将 PPD 文件的副本置于 user PPD 文件库中的 user 标记目录中。有关更多信息,请参见“Adminstering
29、PostScript Printer Description (PPD) Files”中的“Using the PPD Manager Utility”。有关更多信息,请参见 lpadmin(1M)。e. 指定打印机描述。# lpadmin -p printer-name -D printer-description4. 设置打印机目标、协议和超时值。# lpadmin -p printer-name -o dest=access-name:port -o protocol=protocol-o timeout=value5. -p printer-name 6. 指定网络打印机名称。7. -
30、o dest=access-name:port 8. 将打印机目标设置为网络打印机访问名称和指定的打印机供应商端口,前提是该端口是在打印机供应商文档中定义的。9. -o protocol=protocol 10. 设置用于与打印机进行通信的线上协议。同时支持 BSD 和原始 TCP。11. -o timeout=value 12. 设置一个重试超时值,该值表示在连接到打印机的两次尝试之间等待的秒数。 13. (可选)将过滤器添加到打印服务器。# cd /etc/lp/fd# for filter in *.fd;do name=basename $ filter .fd lpfilter -f
31、 $name -F $ filter done14. 启用打印机以接受打印请求并打印这些请求。 # accept printer-name# enable printer-name15. 验证是否正确配置了打印机。# lpstat -p printer-name16. 添加对新打印机的客户机访问。在添加打印机后,为客户机创建对打印机的访问。有关更多信息,请参见 设置打印客户机。有关如何使用名称服务定义打印客户机的信息,请参见名称服务交换机中的打印支持。17. 完成任何可选的任务。设置打印机时,可能需要完成多个可选任务。有关其他任务的链接,请参见设置打印(任务图)。有关如何使用名称服务定义打印客
32、户机的信息,请参见名称服务交换机中的打印支持。示例 37 通过 LP 打印服务命令使用 PPD 文件添加新的网络打印机此示例说明如何使用 PPD 文件添加新的网络打印机。使用 lpadmin 命令的 -n 选项,可以通过指定 PPD 文件来添加新的打印队列。此示例中使用的命令必须在打印服务器上执行。以下信息仅是一个示例。您提供的信息可能会有所不同。 打印机名称:luna1 设备:/dev/null 接口:/usr/lib/lp/model/netstandard_foomatic 网络打印机访问名称:nimquat:9100 协议:tcp 超时: 5 文件内容类型:postscript PPD
33、 文件: /path/ ppdfile # lpadmin -p luna1 -v /dev/null (1)# lpadmin -p luna1 -m netstandard_foomatic (2)# lpadmin -p luna1 -o dest=nimquat:9100 -o protocol=tcp -o timeout=5 (3)# lpadmin -p luna1 -I postscript (4)# lpadmin -p luna1 -n /path/ppdfile (5)# lpadmin -p luna1 -D Second floor color printer(6)#
34、 cd /etc/lp/fd# for filterin *.fd;do name =basename $ filter .fd lpfilter -f $ name -F $ filter done (7)# accept luna1destination luna1 now accepting requests# enable luna1 (8)printer luna1 now enabled # lpstat -p luna1 (9) printer luna1 is idle. enabled since Mon Apr 19 15:31:15 2004. available.1.
35、定义打印机名称,并将设备设置为 /dev/null 2. 定义网络打印机的接口脚本3. 设置目标、协议和超时4. 指定打印机可以直接打印到的文件内容类型5. 指定要使用的 PPD 文件6. 添加打印机描述7. 将打印过滤器添加到打印服务器8. 接受打印机的打印请求并启用打印机9. 验证打印机是否已准备好进行打印示例 38 在不使用 PPD 文件的情况下通过 LP 打印服务命令添加新的网络打印机此示例说明如何在不使用 PPD 文件的情况下添加新的网络打印机。命令必须在打印服务器上执行。以下信息仅是一个示例。您提供的信息可能会有所不同。 打印机名称:luna1 设备:/dev/null 接口:/u
36、sr/lib/lp/model/netstandard 网络打印机访问名称:nimquat:9100 协议:tcp 超时: 5 文件内容类型:postscript 打印机类型:PS # lpadmin -p luna1 -v /dev/null (1)# lpadmin -p luna1 -m netstandard (2)# lpadmin -p luna1 -o dest=nimquat:9100 -o protocol=tcp -o timeout=5 (3)# lpadmin -p luna1 -I postscript -T PS (4)# lpadmin -p luna1 -D R
37、oom 1954 ps (5)# cd /etc/lp/fd# for filter in *.fd;do name =basename $ filter .fd lpfilter -f $ name -F $ filter done (6)# accept luna1destination luna1 now accepting requests# enable luna1 (7)printer luna1 now enabled # lpstat -p luna1 (8)printer luna1 is idle.enabled since Feb 28 11:21 2003.availa
38、ble.1. 定义打印机名称,并将设备设置为 /dev/null 2. 定义网络打印机的接口脚本3. 设置目标、协议和超时4. 指定打印机可以直接打印到的文件内容类型以及打印机类型5. 添加打印机描述6. 将打印过滤器添加到打印服务器7. 接受打印机的打印请求并启用打印机8. 验证打印机是否已准备好进行打印附录资料:不需要的可以自行删除 libxml2应用实例Libxml2 是一个xml的c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持c语言版以外,还支持c+、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、
39、Linux、Solaris、MacOsX等平台上运行。功能还是相当强大的,相信满足一般用户需求没有任何问题。二、 Libxml2安装:一般如果在安装系统的时候选中了所有开发库和开发工具的话(Fedora Core系列下),应该不用安装,下面介绍一下手动安装: 1) 从xmlsoft站点或ftp(ftp.xmlsoft.org)站点下载libxml压缩包(libxml2-xxxx.tar.gz)2) 对压缩包进行解压缩 tar xvzf libxml2-xxxx.tar.gz3) 进入解压缩后的文件夹中运行 ./configure -prefix /home/user/myxml/xmlinst
40、(此处为待安装的路径)或者直接使用 ./configure make make install 4) 添加路径 export PATH=/home/user/myxml/xmlinst/bin:$PATH 说明:为了结构清晰,最好将libxml2不安装在解压目录中。安装完成后就可以使用简单的代码解析XML文件,包括本地和远程的文件,但是在编码上有一些问题。Libxml默认只支持UTF8的编码,无论输入输出都是UTF-8,所以如果你解析完一个XML得到的结果都是UTF8的,如果需要输出GB2312或者其它编码,需要ICONV来做转码(生成UTF8编码的文件也可以用它做),如果系统中没有安装ico
41、nv的话,需要安装libiconv。 1) 下载libiconv压缩包(例如libiconv-1.11.tar.gz) 2) 对压缩包进行解压缩tar xvzf libiconv-1.11.tar.gz 3) 进入解压缩后的文件夹中运行 ./configure make make install三、关于XML:在开始研究 Libxml2 库之前,先了解一下XML的相关基础。XML 是一种基于文本的格式,它可用来创建能够通过各种语言和平台访问的结构化数据。它包括一系列类似 HTML 的标记,并以树型结构来对这些标记进行排列。例如,可参见清单 1 中介绍的简单文档。为了更清楚地显示 XML 的一般
42、概念,下面是一个简化的XML文件。清单 1. 一个简单的 XML 文件 root delete 10清单 1 中的第一行是 XML 声明,它告诉负责处理 XML 的应用程序,即解析器,将要处理的 XML 的版本。大部分的文件使用版本 1.0 编写,但也有少量的版本 1.1 的文件。它还定义了所使用的编码。大部分文件使用 UTF-8,但是,XML 设计用来集成各种语言中的数据,包括那些不使用英语字母的语言。接下来出现的是元素。一个元素以开始标记 开始(如 ),并以结束标记 结束(如 ),其中使用斜线 (/) 来区别于开始标记。元素是 Node 的一种类型。XML 文档对象模型 (DOM) 定义了
43、几种不同的 Nodes 类型,包括:Elements(如 files 或者 age)Attributes(如 units)Text(如 root 或者 10)元素可以具有子节点。例如,age 元素有一个子元素,即文本节点 10。XML 解析器可以利用这种父子结构来遍历文档,甚至修改文档的结构或内容。LibXML2 是这样的解析器中的其中一种,并且文中的示例应用程序正是使用这种结构来实现该目的。对于各种不同的环境,有许多不同的解析器和库。LibXML2 是用于 UNIX 环境的解析器和库中最好的一种,并且经过扩展,它提供了对几种脚本语言的支持,如 Perl 和 Python。四、Libxml2中
44、的数据类型和函数一个函数库中可能有几百种数据类型以及几千个函数,但是记住大师的话,90%的功能都是由30%的内容提供的。对于libxml2,我认为搞懂以下的数据类型和函数就足够了。1)内部字符类型xmlCharxmlChar是Libxml2中的字符类型,库中所有字符、字符串都是基于这个数据类型。事实上它的定义是:xmlstring.htypedef unsigned char xmlChar;使用unsigned char作为内部字符格式是考虑到它能很好适应UTF-8编码,而UTF-8编码正是libxml2的内部编码,其它格式的编码要转换为这个编码才能在libxml2中使用。还经常可以看到使用xmlChar*作为字符串类型,很多函数会返回一个动态分配内存的xmlChar*变量,使用这样的函数时记得要手动删除内存。2) xmlChar相关函数如同标准c中的char类型一样,xmlChar也有动态内存分配、字符串操作等相关函数。例如xmlMalloc是动态分配内存的函数;xmlFree是配套的释放内存函数;xmlStrcmp是字符串比较函数等等。基本上xmlChar字符串相关函数都在xmlstring.h中定义;而动态内存分配函数在xmlmemory.h中定义。3)xmlChar*与其它类型之间的转换另外要注意,因为总是要在xmlChar*和char*之间进行类型转换,所