Hi.

I tried to use the XDOM API (XML for BASIC API Programmatic
Interfaces) in Universe Basic for parsing XML file and extracting
element values but for some reason I got error when calling the XDOMGetNodeValue function.


Here is an example.
Suppose I have a simple XML file called "TEST.xml" stored in a type 19
file (directory) called TEST.FILE:

LIST.ITEM TEST.FILE TEST.xml 01:25:41pm  04 Oct 2011  PAGE    1

   TEST.xml
001 <?xml version="1.0"?>
002 <test>
003     <name>John Smith</name>
004     <id>12345</id>
005 </test>


I also created following program which uses XDOM API and a XPath
string to locate the "name" element node in TEST.xml and extract its
value.

ED TEST.BP TEST.XDOM
50 lines long.

----: P999
0001: $OPTIONS DEFAULT
0002: $INCLUDE UNIVERSE.INCLUDE XML.H
0003: !
0004:       STATUS = XDOMOpen("TEST.FILE/TEST.xml", XML.FROM.FILE,
XDOMHandle)
0005:       BEGIN CASE
0006:          CASE STATUS = XML.SUCCESS
0007:             CRT "XDOMOpen Success"
0008:          CASE STATUS = XML.ERROR
0009:             CRT "XDOMOpen Error"
0010:             GOSUB DISPLAY.XML.ERROR ; STOP
0011:          CASE STATUS = XML.INVALID.HANDLE
0012:             CRT "XDOMOpen Invalid Handle"
0013:             GOSUB DISPLAY.XML.ERROR ; STOP
0014:       END CASE
0015: !
0016:       XPath = '/test/name'
0017:       nsMap = ''
0018:       STATUS = XDOMLocate(XDOMHandle, XPath, nsMap, nodeHandle)
0019:       BEGIN CASE
0020:          CASE STATUS = XML.SUCCESS
0021:             CRT "XDOMLocate Success"
0022:          CASE STATUS = XML.ERROR
0023:             CRT "XDOMLocate Error"
0024:             GOSUB DISPLAY.XML.ERROR ; STOP
0025:          CASE STATUS = XML.INVALID.HANDLE
0026:             CRT "XDOMLocate Invalid Handle"
0027:             GOSUB DISPLAY.XML.ERROR ; STOP
0028:       END CASE
0029: !
0030:       STATUS = XDOMGetNodeValue(nodeHandle, nodeValue)
0031:       BEGIN CASE
0032:          CASE STATUS = XML.SUCCESS
0033:             CRT "XDOMGetNodeValue Success"
0034:          CASE STATUS = XML.ERROR
0035:             CRT "XDOMGetNodeValue Error"
0036:             GOSUB DISPLAY.XML.ERROR ; STOP
0037:          CASE STATUS = XML.INVALID.HANDLE
0038:             CRT "XDOMGetNodeValue Invalid Handle"
0039:             GOSUB DISPLAY.XML.ERROR ; STOP
0040:       END CASE
0041: !
0042:       CRT 'nodeValue = ':nodeValue
0043: !
0044:       STOP
0045: !
0046: DISPLAY.XML.ERROR:
0047:       STATUS = XMLGetError(errorCode, errorMessage)
0048:       CRT "errorCode = ":errorCode
0049:       CRT "errorMessage = ":errorMessage
0050:       RETURN
Bottom at line 50.
----: Q


When I run the program the XDOMGetNodeValue function always
return an erro code 28.

RUN TEST.BP TEST.XDOM
XDOMOpen Success
XDOMLocate Success
XDOMGetNodeValue Error
errorCode = 28
errorMessage = No requested data was available.


I have tested this program on both UniVerse 10.2.7 running on HP-UX
11.23 and also UniVerse 10.1.18 on a Windows XP workstation but I got
the same error code 28 on both platforms.

It would be greatly appreciated if anyone can point out if I made any
mistake using the XDOM API or if there is a better way to parse XML
file using XPath in Universe Basic.

Thank you.
Jason
_______________________________________________
U2-Users mailing list
U2-Users@listserver.u2ug.org
http://listserver.u2ug.org/mailman/listinfo/u2-users

Reply via email to