Completed
Push — master ( 4f50ab...5be735 )
by Ondřej
03:27
created

xml.php ➔ first()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 8
nc 1
nop 0
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
1
<?php
2
function first() {
3
    $doc = new DOMDocument();
4
    $doc->loadXML("<root/>");
5
    $node = $doc->createTextNode('wheee');
6
    $doc->documentElement->appendChild($node);
7
    echo __FUNCTION__ . ":\n";
8
    echo $doc->saveXML($node);
9
    echo "\n";
10
}
11
first();
12
13
function second() {
14
    $doc = new DOMDocument();
15
    $doc->loadXML("<root/>");
16
    $f = $doc->createDocumentFragment();
17
    $f->appendXML("<foo>text</foo><bar>text2</bar>");
18
    $doc->documentElement->appendChild($f);
19
    echo __FUNCTION__ . ":\n";
20
    echo $doc->saveXML($f); // although a DOMNode subclass, DOMDocumentFragment does not get saved :(
21
    echo "\n";
22
}
23
second();
24
25
function third() {
26
    $domImpl = new DOMImplementation();
27
    $doc = $domImpl->createDocument(null, 'root');
28
    $doc->xmlVersion = '1.1';
29
    $doc->encoding = 'US-ASCII';
30
    echo __FUNCTION__ . ":\n";
31
    echo $doc->saveXML();
32
    echo "\n";
33
}
34
third();
35
36
function fourth() {
37
    $doc = new DOMDocument();
38
    $doc->loadXML('<root><a><b>bagr</b></a><b>veslo</b><b>jerab</b></root>');
39
    $doc->xmlVersion = '1.1';
40
    echo __FUNCTION__ . ":\n";
41
    echo $doc->saveXML();
42
    echo "\n";
43
    $nodeList = $doc->getElementsByTagName('b');
44
    echo get_class($nodeList) . "\n";
45
    foreach ($nodeList as $el) {
46
        echo $el->ownerDocument->saveXML($el) . "\n";
47
    }
48
}
49
fourth();
50
51
function fifth() {
52
    echo "\n\n\n";
53
    echo __FUNCTION__ . ":\n";
54
55
    $xmls = [
56
        '<foo>text</foo><bar>text2</bar>',
57
        '<root><a><b>bagr</b></a><b>veslo</b><b>jerab</b></root>',
58
        sprintf('<root>%s</root>', str_repeat('<a b="3"/>', 100000)),
59
        sprintf('<root>%s</root><b>', str_repeat('<a b="3"/>', 100000)),
60
    ];
61
62
    $validators = [
63
        function ($xml) {
64
            $reader = new XMLReader();
65
            $reader->xml($xml);
66
            if (!@$reader->read()) {
67
                return false;
68
            }
69
            while (@$reader->read()) {}
70
            return ($reader->depth == 0);
71
        },
72
73
//        function ($xml) {
74
//            $reader = new XMLReader();
75
//            $reader->xml($xml);
76
//
77
//            printf("Read node type %s at depth %d\n", $reader->nodeType, $reader->depth);
78
//            echo "Started\n";
79
//            while ($reader->read()) {
80
//                printf("Read node type %s at depth %d\n", $reader->nodeType, $reader->depth);
81
//            }
82
//            echo "Stopped\n";
83
//            printf("Read node type %s at depth %d\n", $reader->nodeType, $reader->depth);
84
//
85
//            return true;
86
//        },
87
    ];
88
89
    foreach ($validators as $v => $validator) {
90
        echo "VALIDATOR $v:\n";
91
        foreach ($xmls as $i => $xml) {
92
            echo "$i: ";
93
            var_dump($validator($xml));
94
        }
95
        echo "\n\n";
96
    }
97
98
99
//    $reader = new XMLReader();
100
//    $opened = $reader->xml('<foo>text</foo><bar>text2</bar>');
101
//    var_dump($opened);
102
//    var_dump($reader->isValid());
103
//    echo "\n";
104
//    $reader = new XMLReader();
105
//    $opened = $reader->xml('<foo>text</foo><bar>text2</bar>');
106
//    var_dump($opened);
107
//    $reader->setParserProperty(XMLReader::VALIDATE, true);
108
//    var_dump($reader->isValid());
109
//    echo "\n";
110
//    $reader = new XMLReader();
111
//    $opened = $reader->xml('<foo>text</foo><bar>text2</bar>');
112
//    var_dump($opened);
113
//    while (@$reader->next()) {}
114
//    var_dump(($reader->depth == 0));
115
//    echo "\n";
116
//    $reader = new XMLReader();
117
//    $opened = $reader->xml('<foo>text</foo><bar>text2</bar>');
118
//    var_dump($opened);
119
//
120
//    while ($reader->next() && $reader->isValid() && $reader->depth > 0) {
121
//        printf("read `%s` at depth %d\n", $reader->readString(), $reader->depth);
122
//    }
123
//    var_dump(($reader->depth == 0));
124
125
//    echo "\n";
126
//    echo "\n";
127
//
128
//    $reader = new XMLReader();
129
//    $opened = $reader->xml('<root><a><b>bagr</b></a><b>veslo</b><b>jerab</b></root>');
130
//    var_dump($opened);
131
//    var_dump($reader->isValid());
132
//    echo "\n";
133
//    $reader = new XMLReader();
134
//    $opened = $reader->xml('<root><a><b>bagr</b></a><b>veslo</b><b>jerab</b></root>');
135
//    var_dump($opened);
136
//    $reader->setParserProperty(XMLReader::VALIDATE, true);
137
//    var_dump($reader->isValid());
138
//    echo "\n";
139
//    $reader = new XMLReader();
140
//    $opened = $reader->xml('<root><a><b>bagr</b></a><b>veslo</b><b>jerab</b></root>');
141
//    var_dump($opened);
142
//    while ($reader->next()) {}
143
//    var_dump(($reader->depth == 0));
144
//    echo "\n";
145
//    $reader = new XMLReader();
146
//    $opened = $reader->xml('<root><a><b>bagr</b></a><b>veslo</b><b>jerab</b></root>');
147
//    $reader->setParserProperty(XMLReader::VALIDATE, true);
148
//    var_dump($opened);
149
//    while (@$reader->next() && $reader->isValid() && $reader->depth > 0) {}
150
//    var_dump(($reader->depth == 0));
151
152
    echo "\n\n\n";
153
}
154
fifth();
155
156