maccy93 Posted November 8, 2011 Share Posted November 8, 2011 From w3 schools: http://www.w3schools.com/xpath/xpath_examples.asp which uses a book xml example which looks like: <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore> I'm trying to learn how to use xml but i can't seem to get it with w3schools. I want to be able to just select the book of 'category="COOKING"' In the example - http://www.w3schools.com/xpath/tryit.asp?filename=try_xpath_select_pricenodes_35 it manages to select all prices under 35 by using the following path: path="/bookstore/book[price>35]/price"; How can I change this to something like: path="/bookstore/book[category="COOKING"]/price"; Link to comment https://forums.phpfreaks.com/topic/250741-getting-xml-tags-by-attribute-name-with-js/ Share on other sites More sharing options...
maccy93 Posted November 9, 2011 Author Share Posted November 9, 2011 I don' think I asked my question correctly. The following example from w3 schools uses this xml file: <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> And then the following script gets and prints on a new line all the text from the price tags. <html> <body> <script type="text/javascript"> function loadXMLDoc(dname){ if (window.XMLHttpRequest){ xhttp=new XMLHttpRequest(); } else{ xhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",dname,false); xhttp.send(""); return xhttp.responseXML; } //getting the xml into a var to parse xml=loadXMLDoc("books.xml"); //the path in question path="/bookstore/book/price/text()" ////how can i change this to only select the prices of the books where the category="COOKING" ? // code for IE if (window.ActiveXObject){ var nodes=xml.selectNodes(path); for (i=0;i<nodes.length;i++) { document.write(nodes[i].nodeValue); document.write("<br />"); } } // code for Mozilla, Firefox, Opera, etc. else if (document.implementation && document.implementation.createDocument){ var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE,null); var result=nodes.iterateNext(); while (result) { document.write(result.nodeValue + "<br />"); result=nodes.iterateNext(); } } </script> </body> </html> Is it possible to change the path so that the script will only print out the text of the prices tag where parent tag 'book' has a category of 'COOKING' ?? I'm really stuck and can't seem to find out how to get it. Any help would awesome Link to comment https://forums.phpfreaks.com/topic/250741-getting-xml-tags-by-attribute-name-with-js/#findComment-1286523 Share on other sites More sharing options...
Adam Posted November 9, 2011 Share Posted November 9, 2011 path="/bookstore/book/price/text()" This line is XPath.. Think of it like a SQL query to select certain data matching a pattern. You just need to run a check on the attribute: path="/bookstore/book[@category='COOKING']/price/text()" Link to comment https://forums.phpfreaks.com/topic/250741-getting-xml-tags-by-attribute-name-with-js/#findComment-1286675 Share on other sites More sharing options...
maccy93 Posted November 9, 2011 Author Share Posted November 9, 2011 Ahhh... cool thanks. I couldn't find how to do that using w3schools so was about to give up thanks a lot Link to comment https://forums.phpfreaks.com/topic/250741-getting-xml-tags-by-attribute-name-with-js/#findComment-1286713 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.