  | Mailing List | | Home | | Forum Home | | JBoss - Java Application Server | | Struts - A MVC web framework | | Tomcat - JSP/Servlet container | | iText - An open source PDF Java Library | | JDOM - JDOM XML Parser | | J2EE - A mailing list for Java(tm) 2 Platform, Enterprise Edition | | J2EE Pattern - An interest list for Sun Java Center J2EE Pattern Catalog | | Servlet - A mailing list for discussion about Sun Microsystem's Java Servlet API Technology | | JSP - A mailing list about Java Server Pages specification and reference | |
Struts & Hibernate
|
|
|
  | | | Jaxen method of matching XPath | Jaxen method of matching XPath 2004-03-23 - By Anna Afonchenko
Back I am using JDOM to access and change some XML file. I noticed that when I apply some XPath, the nodes match by Depth First Search, not by Breadth First Search (as in saxon, for example). E.g., when applying XPath //a on the next document: <b> <a>1</a> </b> <a>2</a> First the <a>2</a> will be matched, and then <a>1</a>. This is how I apply it in the code: //read in the xml file Document xmlDocument = new SAXBuilder().build(xmlDocument); org.jaxen.XPath path = new JDOMXPath(sXPath); currentElement = (Element) path.selectSingleNode(xmlDocument); XMLOutputter outputter = new XMLOutputter(); return outputter.outputString(currentElement);
Is there any possible way of forcing jaxen to perform BFS match for XPath? So that for the previous xml file and XPath it will return as a result <a>1</a>.
I apologise if this question was asked before, it is not in the FAQ, and I could not find something similar in the archives.
Thank you very much for help.
Anna
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=iso-8859 (See http://iso-8859.ora-code.com)-1"> <META content="MSHTML 6.00.2800.1400" name=GENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=#ffffff> <DIV><FONT face=Arial size=2>I am using JDOM to access and change some XML file.</FONT></DIV> <DIV><FONT face=Arial size=2>I noticed that when I apply some XPath, the nodes match by Depth First Search, not by Breadth First Search (as in saxon, for example).</FONT></DIV> <DIV><FONT face=Arial size=2>E.g., when applying XPath //a on the next document:</FONT></DIV> <DIV><FONT face=Arial size=2><b></FONT></DIV> <DIV><FONT face=Arial size=2> <a>1</a></FONT></DIV> <DIV><FONT face=Arial size=2></b></FONT></DIV> <DIV><FONT face=Arial size=2><a>2</a></FONT></DIV> <DIV><FONT face=Arial size=2>First the <a>2</a> will be matched, and then <a>1</a>.</FONT></DIV> <DIV><FONT face=Arial size=2>This is how I apply it in the code:</FONT></DIV> <DIV><FONT face=Arial size=2>//read in the xml file</FONT></DIV> <DIV><FONT face=Arial size=2>Document xmlDocument = new SAXBuilder().build(xmlDocument);</FONT></DIV> <DIV><FONT face=Arial size=2>org.jaxen.XPath path = new JDOMXPath(sXPath);<BR>currentElement = (Element) path.selectSingleNode(xmlDocument);</FONT></DIV> <DIV><FONT face=Arial size=2>XMLOutputter outputter = new XMLOutputter();<BR>return outputter.outputString(currentElement);</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>Is there any possible way of forcing jaxen to perform BFS match for XPath? So that for the previous xml file and XPath it will return as a result <a>1</a>.</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>I apologise if this question was asked before, it is not in the FAQ,</FONT></DIV> <DIV><FONT face=Arial size=2>and I could not find something similar in the archives.</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>Thank you very much for help.</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>Anna</FONT></DIV></BODY></HTML>
|
|
 |