Brian Dunning's FileMaker Custom Functions

GetXmlContent ( theXml ; theNodeName ; theInstanceNumber )

Extract data from XML snippet which may contain attributes and/or erroneous partial matches

  Average rating: 4.6 (25 votes) Log in to vote

JT   JT

Share on Facebook Share on Twitter

  Sample input:
GetXmlContent ( theXml ; "test" ; 2 )

Where theXml =

123
Norm
456
789
  Sample output:
456

  Function definition: (Copy & paste into FileMaker's Edit Custom Function window)

This function was inspired by Andy Knasinski's ExtractData ( http://www.briandunning.com/cf/1 ) and expanded to account for erroneous partial-match error returns and multiple matching instances which may or may not contain attributes.

 

Comments

comment   comment, VR
Feb 17, 2015
It is a common misconception that XML can be easily and relaible paresed using text function. Consider the folowing example:

<xml>
<test>one</test>
<test xmlns="urn:X-ample:1">two</test>
<test>the real two</test>
</xml>

What is the value of the second occurrence of element named "test"? The above CF tells us it is "two", but the correct answer is "the real two" - compare:
http://www.utilities-online.info/xpath/?save=10882c1b-0ee1-4468-bb20-6a49ffee330e-xpath#.VOL3IYURJFQ
 
john renfrew   john renfrew, attitude
Feb 25, 2015
This:
~positionNodeTest = Position ( ~xmlTransformed ; RARETEXT ; 1 ; theInstanceNumber );

should be:
~positionNodeTest = Position ( ~xmlTransformed ; RARETEXT ; 1 ; ~instanceNumber );
 
JT   JT
Feb 25, 2015
Fixed, thanks John. I noticed that earlier but hadn't a chance to fix it yet.

comment, good point about the namespacing. But for my purposes at least, "two" would be the correct result. Caveat Functioner, I guess.
 
Bruce Robertson   Bruce Robertson
Apr 13, 2015
Does not compile as written. There is no Null function.

Case (
// IF EMPTY PARAMETER(S)
IsEmpty ( theXml )
or IsEmpty ( theNodeName ) ;
Null; // RETURN
 
JT   JT
Apr 13, 2015
Fixed. Thanks, Bruce!
 

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Under construction. Email me your wish list for improvements.