lr_xml_extract
| XML Functions (lr_xml) |
Extracts XML fragments from an XML string.
int lr_xml_extract( <List of specifications> [, <List of optional specifications> ] [, LAST]);
| List of specifications | For the following list of required specifications, use the following string format:"Specification=value" XML: the XML Input String to query XMLFragmentParam: the name of the output parameter containing the extracted XML string fragment Query: the XML Query or Fast Query on the input string XML. |
| List of optional specifications | For the following list of optional specifications, use the following string format:"Specification=value" OutputFormat: One of |
| LAST | A marker which indicates the end of the List of optional specifications. |
The lr_xml_extract function queries the XML input string XML and extracts the fragments of the XML tree which match the Query criteria. The output parameter XMLFragmentParam contains the extracted fragments.
Return Values
See Return Values
Parameterization
See Parameterization
Example
The following example uses lr_xml_extract to retrieve the employees in the engineering department from the XML string xml_input. lr_xml_extract extracts the entire string fragment that makes up the tag /acme_org/engineering_dept/employee.
The resulting fragment is stored in the XMLFragmentParam parameter Result, which is sent to the output at the end of the test.
For more examples of the use of lr_xml_extract, see Examples: common actions.
#include "as_web.h"
char * xml_input =
"<acme_org>"
" <accounts_dept>"
"<employee>"
" <name>John Smith</name>"
"<cubicle>227</cubicle>"
"<extension>2145</extension>"
"</employee>"
"</accounts_dept>"
"<engineering_dept>"
"<employee level=\"manager\">"
"<name>Sue Jones</name>"
"<extension>2375</extension>"
"</employee>"
"</engineering_dept>"
"</acme_org>";
Action() {
int i, NumOfValues;
char buf[64];
lr_save_string(xml_input, "XML_Input_Param"); // Save input as parameter
lr_xml_extract("XML={XML_Input_Param}",
"XMLFragmentParam=Result",
"Query=/acme_org/engineering_dept/employee", LAST );
lr_output_message(lr_eval_string("Extracted: {Result}"));
return 0;
}
Example: Output:
Action.c(31): Extracted: <employee level="manager"><name>Sue Jones</name><extension>2375</extension></employee>
Example 2
In the following example, lr_xml_extract extracts an attribute and its value from the employee element.
lr_xml_extract( "Xml={XML_Input_Param}","Query=/acme_org/engineering_dept/employee/@level",
"XMLFragmentParam=Result",
LAST
);
lr_output_message(lr_eval_string("***** {Result} *****"));Example: Output:
Action1.c(117): "lr_xml_extract" was successful, 1 match processed
Action1.c(122): ***** level="manager" *****

