File tree Expand file tree Collapse file tree 2 files changed +24
-3
lines changed
Expand file tree Collapse file tree 2 files changed +24
-3
lines changed Original file line number Diff line number Diff line change 22namespace TheSeer \Tokenizer ;
33
44use DOMDocument ;
5+ use XMLWriter ;
56
67class XMLSerializer {
78
@@ -32,7 +33,15 @@ public function toXML(TokenCollection $tokens): string {
3233 $ writer = new \XMLWriter ();
3334 $ writer ->openMemory ();
3435 $ writer ->setIndent (true );
36+
3537 $ writer ->startDocument ();
38+ $ this ->appendToWriter ($ writer , $ tokens );
39+ $ writer ->endDocument ();
40+
41+ return $ writer ->outputMemory ();
42+ }
43+
44+ public function appendToWriter (XMLWriter $ writer , TokenCollection $ tokens ): void {
3645 $ writer ->startElement ('source ' );
3746 $ writer ->writeAttribute ('xmlns ' , $ this ->xmlns ->asString ());
3847
@@ -67,8 +76,5 @@ public function toXML(TokenCollection $tokens): string {
6776 }
6877
6978 $ writer ->endElement ();
70- $ writer ->endDocument ();
71-
72- return $ writer ->outputMemory ();
7379 }
7480}
Original file line number Diff line number Diff line change @@ -25,6 +25,21 @@ public function testCanBeSerializedToXml(): void {
2525 $ this ->assertEquals ($ expected , $ serializer ->toXML ($ this ->tokens ));
2626 }
2727
28+ public function testCanAppendToWriter (): void {
29+ $ expected = \file_get_contents (__DIR__ . '/_files/test.php.xml ' );
30+
31+ $ writer = new \XMLWriter ();
32+ $ writer ->openMemory ();
33+ $ writer ->setIndent (true );
34+
35+ $ serializer = new XMLSerializer ();
36+ $ writer ->startDocument ();
37+ $ serializer ->appendToWriter ($ writer , $ this ->tokens );
38+ $ writer ->endDocument ();
39+
40+ $ this ->assertEquals ($ expected , $ writer ->outputMemory ());
41+ }
42+
2843 public function testCanBeSerializedToDomDocument (): void {
2944 $ serializer = new XMLSerializer ();
3045 $ result = $ serializer ->toDom ($ this ->tokens );
You can’t perform that action at this time.
0 commit comments