欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

XML 取得元素的字符数据

程序员文章站 2022-03-21 22:32:05
列表9-3 中的script 程序使用每个子元素(title、author、binding、pages 与price)的text 属性,来作为取得元素字符数据的快捷方法。例如,下列的程序代码被用来...

列表9-3 中的script 程序使用每个子元素(title、author、binding、pages 与price)的text 属性,来作为取得元素字符数据的快捷方法。例如,下列的程序代码被用来撷取title元素中的字符数据:


title.innertext=document.documentelement.childnodes(0).text;
    text 属性不仅提供了目前节点所代表的元素其文字内容,也提供任何后续元素的文字内容。当元素没有任何子元素时,该属性可以正确地撷取元素中的文字内容(如元素title)。然而,如果元素包含一个以上的子元素与字符数据,则text 属性将传回所有的文字,如同下面范例所示(在这个范例中是「moby-dick or,the whale」)。
<title>moby-dick
<subtitle>or,the whale</subtitle>
</title>
    为了只取得title 元素的字符数据,你必须存取title 元素的子文字节点。
    表格9-1 中,element 节点的nodevalue 属性的值是null。如果元素包含了字符数据,则文字将被储存于子text 节点,而你可以从此text 节点的nodevalue 属性来存取字符数据。例如,如同前面范例所示,如果title 元素的element 节点包含文字「moby-dick」,则下面的程序代码将提供title 的字符数据「moby-dick」,而不含属于subtitle 的字符数据:
element.firstchild.nodevalue
    (因为title 元素的字符数据位置在其子元素的前面,所以由第一个子节点来表示字符数据,因此你可以使用firstchild 属性来撷取字符数据。)如果元素的字符数据与子元素、批注,或处理指令散置在一起,则每个个别的字符数据区块将表示成为元素所属的子text 节点。例如,在下面范例中,item 元素拥有三个子节点,其顺序为:text 节点表示第一个字符数据区块,element 节点表示子元素sub-item,而另一个text 节点则代表第二个字符数据区块:
<item>
character data block 1
<sub-item>sub-item text</sub-item>
character data block 2
</item>
    表格9-5 分别列出text 节点所提供的有用属性和方式:

text 节点的属性 描述 范例
length 此节点的文字包含的字符个数 charactercount =text.length;
text 节点的方法 描述 范例
substringdata(char-offset,num-chars) 传回一个包含特定字符数目的字符串,该字符串从节点的文字内容而来。
char-offset 为子字符串的起始位置,和num-chars 为子字符串的长度
substring =text.substringdata(2,3); (从text 元素的内容传回第二、三、四等三个字符)
    表格9-5 文字节点分别提供一个有用的属性和方法,可使用的属性也包括了表格9-2 中所列的共同节点属性。