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 ) + } + +}