1 | <?php |
||
12 | class XMLAdapter implements SourceAdapter |
||
13 | { |
||
14 | /** |
||
15 | * {@inheritdoc} |
||
16 | */ |
||
17 | 308 | public function load($source) |
|
23 | |||
24 | /** |
||
25 | * {@inheritdoc} |
||
26 | */ |
||
27 | 171 | public function dump(Template $template) |
|
28 | { |
||
29 | 171 | $metadata = $template->getMetadata(); |
|
30 | 171 | $dom = $template->getDocument(); |
|
31 | 171 | $dom->preserveWhiteSpace = true; |
|
32 | 171 | $dom->formatOutput = false; |
|
33 | |||
34 | 171 | if ($metadata['xmldeclaration']) { |
|
35 | 1 | return $dom->saveXML(); |
|
36 | } else { |
||
37 | 170 | $xml = ''; |
|
38 | 170 | foreach ($dom->childNodes as $node) { |
|
39 | 169 | $xml .= $dom->saveXML($node); |
|
40 | 169 | if ($node instanceof \DOMDocumentType) { |
|
41 | 1 | $xml .= PHP_EOL; |
|
42 | 1 | } |
|
43 | 170 | } |
|
44 | |||
45 | 170 | return $xml; |
|
46 | } |
||
47 | } |
||
48 | |||
49 | /** |
||
50 | * Collect some metadata about $dom and $source |
||
51 | * @param \DOMDocument $dom |
||
52 | * @param string $source |
||
53 | * @return mixed |
||
54 | */ |
||
55 | 308 | protected function collectMetadata(\DOMDocument $dom, $source) |
|
56 | { |
||
57 | 308 | $metadata = array(); |
|
58 | |||
59 | 308 | $metadata['xmldeclaration'] = strpos(rtrim($source), '<?xml ') === 0; |
|
60 | 308 | $metadata['doctype'] = !!$dom->doctype; |
|
61 | |||
62 | 308 | return $metadata; |
|
63 | } |
||
64 | |||
65 | 308 | protected function createDom($source) |
|
83 | |||
84 | protected function getXmlErrors($internalErrors) |
||
85 | { |
||
104 | } |
||
105 |