diff --git a/src/main/scala/scala/xml/parsing/FactoryAdapter.scala b/src/main/scala/scala/xml/parsing/FactoryAdapter.scala
index ba57434ab..c0d82dbda 100644
--- a/src/main/scala/scala/xml/parsing/FactoryAdapter.scala
+++ b/src/main/scala/scala/xml/parsing/FactoryAdapter.scala
@@ -189,6 +189,7 @@ abstract class FactoryAdapter extends DefaultHandler with factory.XMLLoader[Node
* Processing instruction.
*/
override def processingInstruction(target: String, data: String) {
+ captureText()
hStack pushAll createProcInstr(target, data)
}
}
diff --git a/src/test/scala/scala/xml/parsing/PiParsingTest.scala b/src/test/scala/scala/xml/parsing/PiParsingTest.scala
new file mode 100644
index 000000000..e9769d374
--- /dev/null
+++ b/src/test/scala/scala/xml/parsing/PiParsingTest.scala
@@ -0,0 +1,53 @@
+package scala.xml.parsing
+
+import org.junit.Test
+import org.junit.Ignore
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import scala.xml.JUnitAssertsForXML.assertEquals
+
+class PiParsingTest {
+
+
+ import scala.io.Source.fromString
+ import scala.xml.parsing.ConstructingParser.fromSource
+ import scala.xml.TopScope
+ private def parse(s:String) = fromSource(fromString(s), preserveWS = true).element(TopScope)
+ private def parseNoWS(s:String) = fromSource(fromString(s), preserveWS = false).element(TopScope)
+
+ @Test
+ def piNoWSparse: Unit = {
+ val expected = "ab"
+ assertEquals(expected, parseNoWS("ab"))
+ }
+
+ @Test
+ def piNoWSLiteral: Unit = {
+ val expected = "ab"
+ assertEquals(expected, ab)
+ }
+
+ @Test
+ def piNoWSloadString: Unit = {
+ val expected = "ab"
+ assertEquals(expected, xml.XML.loadString("ab"))
+ }
+
+ @Test
+ def piParse: Unit = {
+ val expected = " a b "
+ assertEquals(expected, parse(" a b "))
+ }
+
+ @Test
+ def piLoadString: Unit = {
+ val expected = " a b "
+ assertEquals(expected, xml.XML.loadString(" a b "))
+ }
+ @Test
+ def piLiteral: Unit = {
+ val expected = " a b "
+ assertEquals(expected, a b )
+ }
+
+}