0
<listing>
<address>1440 Church Street NW #307</address>
<id>1884</id>
<mlsid>DC123456</mlsid>
<status>Sold</status>
<type>Condominium</type>
<offer>For Sale</offer>
<price>925000</price>
<beds>2</beds>
<baths>2</baths>
<parking>Off-Street</parking>
<description>
Lorem ipsum dolor sit amet, unum accusamus laboramus id sea, vix te consul cetero. Vis in amet appetere, mel an appetere scripserit sadipscing, everti dignissim delicatissimi ius ex. Has dictas suscipit in. Feugiat vocibus referrentur no mel, in scripserit sadipscing per, at usu facilisi interesset. Ius ut sapientem neglegentur, no enim essent aliquip cum, ad labitur senserit maiestatis est. Epicurei torquatos vim et, saepe pertinax at pri. Est et sale molestiae scriptorem, per ea cibo scriptorem.
</description>
<ibrochure></ibrochure>
<hoodtour>
</hoodtour>
</listing>

What I tried

getAlltags(string xml){
  var everytag = xml.split('<');
  everytag.forEach(function(tagstring){
     var name = tagstring.split('>')[0];
     console.log(name);
   })
}

It is getting the lists of tags but I think it's not good way. Is there any oneline code to search all tags? Ther result I want from above xml is <listing>, <address>, <id>, <mlsid> ...

1 Answer 1

4

It would be a lot easier if you parsed the XML string into an actual XML document, and then just use traversal methods and an array, like so

var xmlString = "<listing><address>1440 Church Street NW 307</address><id>1884</id><mlsid>DC123456</mlsid><status>Sold</status><type>Condominium</type><offer>For Sale</offer><price>925000</price><beds>2</beds><baths>2</baths><parking>Off-Street</parking><description>Lorem ipsum dolor sit amet, unum accusamus laboramus id sea, vix te consul cetero. Vis in amet appetere, mel an appetere scripserit sadipscing, everti dignissim delicatissimi ius ex. Has dictas suscipit in. Feugiat vocibus referrentur no mel, in scripserit sadipscing per, at usu facilisi interesset. Ius ut sapientem neglegentur, no enim essent aliquip cum, ad labitur senserit maiestatis est. Epicurei torquatos vim et, saepe pertinax at pri. Est et sale molestiae scriptorem, per ea cibo scriptorem.</description><ibrochure></ibrochure><hoodtour>https%3A%2F%2Fplayer.vimeo.com%2Fvideo%2F97603062%3Ftitle%3D0%26byline%3D0%26portrait%3D0</hoodtour></listing>";

var parser = new DOMParser();
var doc    = parser.parseFromString(xmlString, "application/xml");
var tags   = [];

doc.querySelectorAll('*').forEach(el => {
    if ( tags.indexOf(el.tagName) === -1 ) tags.push(el.tagName);
});

console.log(tags);

If even more ES2015 is okay, one could use a Set for unique values

var xml = "<listing><address>1440 Church Street NW 307</address><id>1884</id><mlsid>DC123456</mlsid><status>Sold</status><type>Condominium</type><offer>For Sale</offer><price>925000</price><beds>2</beds><baths>2</baths><parking>Off-Street</parking><description>Lorem ipsum dolor sit amet, unum accusamus laboramus id sea, vix te consul cetero. Vis in amet appetere, mel an appetere scripserit sadipscing, everti dignissim delicatissimi ius ex. Has dictas suscipit in. Feugiat vocibus referrentur no mel, in scripserit sadipscing per, at usu facilisi interesset. Ius ut sapientem neglegentur, no enim essent aliquip cum, ad labitur senserit maiestatis est. Epicurei torquatos vim et, saepe pertinax at pri. Est et sale molestiae scriptorem, per ea cibo scriptorem.</description><ibrochure></ibrochure><hoodtour>https%3A%2F%2Fplayer.vimeo.com%2Fvideo%2F97603062%3Ftitle%3D0%26byline%3D0%26portrait%3D0</hoodtour></listing>";

var parser = new DOMParser();
var doc    = parser.parseFromString(xml, "application/xml");
var tags  =  new Set([].map.call(doc.querySelectorAll('*'), z => z.tagName));

console.log(Array.from(tags));

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, I think it will be the easiest way.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.