ADOBE DIRECTOR 11.0
User Guide
407
put gParserObject.child[1].child[1].attributeName.count
-- 2
Parser objects and XML nodes
As described in earlier sections, the parser object in the
gParserObject
variable stores the root of the parsed tree
of the XML document. An XML node is a node within the tree. The root node is like an XML node because almost
all the operations on XML nodes can be applied to the root node.
In the previous XML example, the root of the tree is an XML element node named
"ROOT OF XML DOCUMENT"
that
has no attributes and one child (the
e1
tag). You can get the same information about the root node as for any of the
child nodes.
The following script returns the root node’s type, name, and number of children:
put gParser.type, gParser.name, gParser.count(#child)
-- #element "ROOT OF XML DOCUMENT" 1
The main difference between the root node and its child nodes is that several script methods apply to the entire XML
document and operate on the root node only. These methods include
doneParsing()
,
getError()
,
ignoreWhiteSpace()
,
makeList()
,
parseString()
, and
parseURL()
.
Treating white space
The default behavior of the XML Parser Xtra is to ignore character data between XML tags when all the characters
are white space. This type of white space is usually due to return characters and superfluous space characters, but
sometimes it can have meaning to the XML document.
Use the
ignoreWhiteSpace()
method to change the way the Xtra treats white space. If
ignoreWhiteSpace()
is set
to
FALSE
instead of its default value of
TRUE
, white space between elements is treated as actual data.
The following script statements leave
ignoreWhiteSpace()
set to the default
TRUE
value, and parse the given XML
into a list. The
sample
element has no children in the list.
XMLtext = "<sample> </sample>"
parserObj.parseString(XMLtext)
theList = parserObj.makelist()
put theList
-- ["ROOT OF XML DOCUMENT": ["!ATTRIBUTES": [:], "sample": ["!ATTRIBUTES": [:]]]]
The following script statements set
ignoreWhiteSpace()
to
FALSE
, and parse the given XML into a list. The
sample
element now has a child that contains one space character.
XMLtext = "<sample> </sample>"
parserObj.ignoreWhiteSpace(FALSE)
parserObj.parseString(XMLtext)
theList = parserObj.makelist()
put theList
-- ["ROOT OF XML DOCUMENT": ["!ATTRIBUTES": [:], "sample": ["!ATTRIBUTES": [:], "!CHARDATA":
" "]]]
If there are non-white space characters in a !CHARDATA node, all the characters of the node, including leading and
trailing white space characters, are retained.
XML and character sets
When you use XML, remember that different computer systems use different binary encoding to represent text
characters.