DataFlex
DataFlex
Find XML Element where Attribute = Value
See more XML Examples
Finds an XML element at a particular location where an attribute has a specified value.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoXml
String sNotUsed
String sTemp1
Boolean bTemp1
Move False To iSuccess
// We have the following XML and wish to find the value of the time attribute where msg = "alert-from".
// <cdr id="4e5d3e7f41bf6201ad81000c29703270" e164="6207">
// <user>
// <grp name="wfln" mode="active"/>
// </user>
// <event msg="setup-to" time="287069" e164="5034"/>
// <event msg="alert-from" time="287069" e164="5034"/>
// <event msg="rel-to" time="287079" e164="5034"/>
// </cdr>
// First, build the above XML:
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Set ComTag Of hoXml To "cdr"
Get ComAddAttribute Of hoXml "id" "4e5d3e7f41bf6201ad81000c29703270" To iSuccess
Get ComAddAttribute Of hoXml "e164" "6207" To iSuccess
Get ComUpdateAttrAt Of hoXml "user|grp" True "name" "wfln" To iSuccess
Get ComUpdateAttrAt Of hoXml "user|grp" True "mode" "active" To iSuccess
Get ComUpdateAttrAt Of hoXml "event" True "msg" "setup-to" To iSuccess
Get ComUpdateAttrAt Of hoXml "event" True "time" "287069" To iSuccess
Get ComUpdateAttrAt Of hoXml "event" True "e164" "5034" To iSuccess
Get ComUpdateAttrAt Of hoXml "event[1]" True "msg" "alert-from" To iSuccess
Get ComUpdateAttrAt Of hoXml "event[1]" True "time" "287069" To iSuccess
Get ComUpdateAttrAt Of hoXml "event[1]" True "e164" "5034" To iSuccess
Get ComUpdateAttrAt Of hoXml "event[2]" True "msg" "rel-to" To iSuccess
Get ComUpdateAttrAt Of hoXml "event[2]" True "time" "287079" To iSuccess
Get ComUpdateAttrAt Of hoXml "event[2]" True "e164" "5034" To iSuccess
// Show that we have the above XML
Get ComGetXml Of hoXml To sTemp1
Showln sTemp1
// Find the element where msg = "alert-from"
// This updates the xml object's reference to the found element (if successful).
Get ComChilkatPath Of hoXml "/A/event,msg,alert-from|$" To sNotUsed
Get ComLastMethodSuccess Of hoXml To bTemp1
If (bTemp1 = False) Begin
Showln "Not found."
Procedure_Return
End
// Get the value of the "time" attribute.
Get ComGetAttrValue Of hoXml "time" To sTemp1
Showln "time = " sTemp1
// Restore the xml object's internal reference to the root of the XML document
Send ComGetRoot2 To hoXml
End_Procedure