You can use three main op-codes to parse an XML file with C$XML: CXML-PARSE-FILE, CXML-OPEN-FILE, and CXML-NEW-PARSER. Each has a slightly different function, as described below. Choose the one that best suits your needs.
|CXML-PARSE-FILE||Opens and parses the specified file|
|CXML-OPEN-FILE||Opens the specified file, so you can parse individual records|
|CXML-NEW-PARSER||Opens a new, empty XML file|
If you prefer, you can parse an XML file directly without opening a file with the CXML-PARSE-STRING op-code. Examples for using these op-codes appear in the following paragraphs.
To open and read an entire XML file, use the CXML-PARSE-FILE op-code. Once a file is parsed, all its elements are immediately retrievable. Parsing entire files can take some time, depending on the size of the file. Use this option when you plan to work extensively with the whole file or when the file is small.
call "C$XML" using CXML-PARSE-FILE "http://www.nws.noaa.gov/data/current_obs/KMYF.xml" move return-code to parser-handle
To simply open the file, but not parse it, use the CXML-OPEN-FILE op-code. With the file open, you can then parse individual records using the CXML-PARSE-NEXT-RECORD op-code. For instance:
CALL "C$XML" using CXML-OPEN-FILE "http://www.nws.noaa.gov/data/current_obs/KMYF.xml" move return-code to parser-handle CALL "C$XML" using CXML-PARSE-NEXT-RECORD parser-handle move return-code to record-handle
This option is more efficient than parsing entire files, but you must remember to parse the record before you try to retrieve its elements.
To create a new XML file, use the CXML-NEW-PARSER op-code. An empty file is opened, into which you can add children, siblings, attributes, and comments as described in the topic Adding Modifying or Deleting Data. Note that the file is not "created" until you write to the file using the CXML-WRITE-FILE op-code.
If you get XML text from another source and need to parse it, you can parse the string directly using the CXML-PARSE-STRING op-code. You don't have to write the data to a file, then parse the file. You simply specify the string directly in the call. For example:
call "C$XML" using CXML-PARSE-STRING, "<?xml version=""1.0""?><group1><subgroup1><item1>data</item1></subgroup1></group1>". move return-code to parse-handle.
Then you can use the return code elsewhere in your program.