Fixed #75
This commit is contained in:
		| @@ -1,6 +1,7 @@ | ||||
| package com.r11.tools.xml; | ||||
|  | ||||
| import org.apache.xpath.XPathAPI; | ||||
| import org.apache.xpath.objects.XObject; | ||||
| import org.w3c.dom.Document; | ||||
| import org.w3c.dom.Node; | ||||
| import org.w3c.dom.traversal.NodeIterator; | ||||
| @@ -76,28 +77,33 @@ public class Xalan { | ||||
|         serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); | ||||
|  | ||||
|         // Use the simple XPath API to select a nodeIterator. | ||||
|         NodeIterator nl = XPathAPI.selectNodeIterator(doc, transform); | ||||
|         try { | ||||
|             NodeIterator nl = XPathAPI.selectNodeIterator(doc, transform); | ||||
|  | ||||
|         // Serialize the found nodes to result object. | ||||
|         StringBuilder result = new StringBuilder(); | ||||
|         Node n; | ||||
|         while ((n = nl.nextNode())!= null) { | ||||
|             StringBuilder sb; | ||||
|             if (isTextNode(n)) { | ||||
|                 // DOM may have more than one node corresponding to a | ||||
|                 // single XPath text node.  Coalesce all contiguous text nodes | ||||
|                 // at this level | ||||
|                 for (Node nn = n.getNextSibling(); isTextNode(nn); nn = nn.getNextSibling()) { | ||||
|                     result.append(nn.getNodeValue()); | ||||
|             // Serialize the found nodes to result object. | ||||
|             StringBuilder result = new StringBuilder(); | ||||
|             Node n; | ||||
|             while ((n = nl.nextNode())!= null) { | ||||
|                 StringBuilder sb; | ||||
|                 if (isTextNode(n)) { | ||||
|                     // DOM may have more than one node corresponding to a | ||||
|                     // single XPath text node.  Coalesce all contiguous text nodes | ||||
|                     // at this level | ||||
|                     for (Node nn = n.getNextSibling(); isTextNode(nn); nn = nn.getNextSibling()) { | ||||
|                         result.append(nn.getNodeValue()); | ||||
|                     } | ||||
|                 } else { | ||||
|                     ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); | ||||
|                     serializer.transform(new DOMSource(n), new StreamResult(new OutputStreamWriter(outputStream))); | ||||
|                     result.append(outputStream); | ||||
|                 } | ||||
|             } else { | ||||
|                 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); | ||||
|                 serializer.transform(new DOMSource(n), new StreamResult(new OutputStreamWriter(outputStream))); | ||||
|                 result.append(outputStream); | ||||
|                 result.append("\n"); | ||||
|             } | ||||
|             result.append("\n"); | ||||
|             return result.toString(); | ||||
|         } catch (TransformerException e) { | ||||
|             return XPathAPI.eval(doc, transform).toString(); | ||||
|         } | ||||
|         return result.toString(); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
		Reference in New Issue
	
	Block a user