Components | All | New | MacOS | Windows | Linux | iOS | ||||
Examples | Mac & Win | Server | Client | Guides | Statistic | FMM | Blog | Deprecated | Old |
XML.NodeNames
Queries list of node names in an XML.
Component | Version | macOS | Windows | Linux | Server | iOS SDK |
XML | 7.0 | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
Parameters
Parameter | Description | Example | Flags |
---|---|---|---|
XML | The XML to process. Can be XML as text or the reference returned by XML.Parse function, so you can make several times queries to the XML without parsing it each time. |
"<test>Hello</test>" | |
recursive | Whether to recurse in sub tree. Pass 1 for rescursive or 0 for non-recursive. Default is 0. |
1 | Optional |
Flags | Various Flags. Add 1 to ignore errors in xml and continue parsing. This may lead to not everything in the xml being read. Add 16 to ignore empty tags. (new in plugin version 7.1) |
0 | Optional |
Result
Returns list or error.
Description
Queries list of node names in an XML.Excludes the root node. The list has no duplicates.
The error "xmlParseEntityRef: no name" means you have an unescaped & in the XML and you should replace it with "&".
Examples
Query list of node names:
MBS( "XML.NodeNames"; "<Person><FirstName>Markus</FirstName><LastName>Müller</LastName><City>New York</City></Person>")
Example result:
FirstName
LastName
City
Create records and fill fields with xml values:
Go to Layout [“XML Parser”]
# find the node with all the records we need:
Set Variable [$oxml; Value:MBS( "XML.SubTree"; XML Parser::Input XML; "Body¶GetCategoryProductsResponse" )]
# query number of products
Set Variable [$count; Value:MBS( "XML.NodeCount"; $oxml; "PRODUCT")]
# loop over products
Set Variable [$index; Value:0]
Loop
# get a product
Set Variable [$xml; Value:MBS( "XML.SubTree"; $oxml; "PRODUCT"; $index)]
# get the names of the XML nodes
Set Variable [$names; Value:MBS( "XML.NodeNames"; $xml; 0; 16)]
# loop over the names
Set Variable [$NameCount; Value:ValueCount ( $names )]
Set Variable [$NameIndex; Value:1]
New Record/Request
Loop
# Query a value and put it in a field
Set Variable [$name; Value:GetValue($names; $NameIndex)]
Set Field By Name ["XML Parser::" & $name; GetXMLValue( $xml; $name)]
Set Variable [$NameIndex; Value:$NameIndex + 1]
Exit Loop If [$NameIndex ≥ $NameCount]
End Loop
Commit Records/Requests [No dialog]
Set Variable [$index; Value:$index + 1]
Exit Loop If [$index ≥ $count]
End Loop
See also
Release notes
- Version 12.2
- Changed XML.NodeNames to return names in order of appearance.
- Version 10.4
- Fixed bug in XML.NodeCount and XML.NodeNames, where root node was counted when we had no children.
- Version 7.1
- Added option to XML.NodeNames to ignore empty entries.
- Version 7.0
- Added XML helper functions: XML.ExtractText, XML.NodeNames, XML.SetVariables, XML.ListAttributes, XML.HasAttributes, XML.GetAttributes and XML.SubTree.
Example Databases
Blog Entries
- MBS FileMaker Plugin, version 12.2pr5
- MBS FileMaker Plugin, version 10.4pr3
- Split XML for DDR into files for GIT
- MBS FileMaker Plugin, version 7.1pr1
- MBS FileMaker Plugin, version 7.0pr1
- New XML Functions in MBS FileMaker Plugin
This function checks for a license.
Created 25th December 2016, last changed 9th March 2023