XML: Count how many <Tags>

13 views (last 30 days)
Nycholas Maia
Nycholas Maia on 3 Jan 2019
Commented: Sean de Wolski on 7 Jan 2019
I have a big XML file and I would like to count how many a specific tag 'X' appears in this text file.
Example: In this example I have a total of 4 X tags in the whole XML file
%% === HERE I HAVE 3 'X Tags' in the XML Level 3 ===
<A> % Level 1
<B> % Level 2
<X> % Level 3
"Some text 1"
</X>
<X> % Level 3
"Some text 2"
</X>
<X> % Level 3
"Some text 3"
</X>
</ B>
</A>
%% === HERE I HAVE ONLY 1 'X Tag' in the XML Level 3 ===
<A> % Level 1
<B> % Level 2
<X> % Level 3
"Some text 4"
</X>
</ B>
</A>
%% === HERE I DON'T HAVE ANY 'X Tag' in the XML Level 3, AND THE LEVEL 3 DOESN'T EXISTS TOO ===
<A> % Level 1
<B> % Level 2
</ B>
</A>
How can I count the total amount of 'X' tags and get a good performace and small time to compute it?

Accepted Answer

Sean de Wolski
Sean de Wolski on 3 Jan 2019
Something along these lines:
xml = xmlread(xmlfile);
Xtag = xml.getElementsByTagName('X');
Xtag.getLength
  4 Comments
Nycholas Maia
Nycholas Maia on 4 Jan 2019
Now, I got the correct numbers using this:
text = fileread('my_file.xml');
num_parts = length(strfind(text, '</score-part>'));
num_measures = length(strfind(text, '</measure>'));
num_notes = length(strfind(text, '</note>'));
I don't know if this is the best way thinking about computation performace, but it's working for now...
If there is a better way to do this, please, comment!
Thank you!
Sean de Wolski
Sean de Wolski on 7 Jan 2019
s = string(fileread(xmlfile))
xs = extractBetween(s, "<x", "</x>")
numel(xs)
Or similar.

Sign in to comment.

More Answers (0)

Products


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!