Met PHP ben ik bezig een work around te maken voor een missende feature in een externe portal welke wij gebruiken. Om dit te kunnen doen heb ik alle "<options>" uit de select nodig. Met XPath kom ik hier een heel eind in maar op de een of andere manier krijg ik de values van de options er niet in.
Het lastige is dat als ik Google met Xpath en "select" erin Google niet helemaal begrijpt dat ik de HTML <select> bedoel waardoor mijn resultaten redelijk garbage zijn.
Dit is (als voorbeeld) de select die ik wil uitlezen. Ik gebruik in PHP hiervoor de volgende XPath query:
Ik krijg nu netjes alle nodes te zien als ik daar doorheen loop maar zonder de value. Ik krijg alleen de inhoud van de option te zien. Komt dit omdat ik eigenlijk al een stap te ver ben gegaan door de /option al te selecteren? En hoe werk ik hier omheen? Ik heb dus de value nodig (bijv. 45, 62 of 144) en de bijbehorende tekst (bijv Tekst A, Tekst B of Tekst C).
Sample output met bovenstaande code
Als ik in de Xpath query er echter @value achter zet verdwijnt mn veld naam
Het lastige is dat als ik Google met Xpath en "select" erin Google niet helemaal begrijpt dat ik de HTML <select> bedoel waardoor mijn resultaten redelijk garbage zijn.
HTML:
1
2
3
4
5
6
| <select name="henk"> <option value="45">Tekst A</option> <option value="62">Tekst B</option> <option value="144">Tekst C</option> </select> |
Dit is (als voorbeeld) de select die ik wil uitlezen. Ik gebruik in PHP hiervoor de volgende XPath query:
PHP:
1
| $xpath->query("//select[@name='henk']/option"); |
Ik krijg nu netjes alle nodes te zien als ik daar doorheen loop maar zonder de value. Ik krijg alleen de inhoud van de option te zien. Komt dit omdat ik eigenlijk al een stap te ver ben gegaan door de /option al te selecteren? En hoe werk ik hier omheen? Ik heb dus de value nodig (bijv. 45, 62 of 144) en de bijbehorende tekst (bijv Tekst A, Tekst B of Tekst C).
Sample output met bovenstaande code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
| DOMElement Object ( [tagName] => option [schemaTypeInfo] => [nodeName] => option [nodeValue] => Tekst A [nodeType] => 1 [parentNode] => (object value omitted) [childNodes] => (object value omitted) [firstChild] => (object value omitted) [lastChild] => (object value omitted) [previousSibling] => (object value omitted) [nextSibling] => (object value omitted) [attributes] => (object value omitted) [ownerDocument] => (object value omitted) [namespaceURI] => [prefix] => [localName] => option [baseURI] => [textContent] => Tekst A ) DOMElement Object ( [tagName] => option [schemaTypeInfo] => [nodeName] => option [nodeValue] => Tekst B [nodeType] => 1 [parentNode] => (object value omitted) [childNodes] => (object value omitted) [firstChild] => (object value omitted) [lastChild] => (object value omitted) [previousSibling] => (object value omitted) [nextSibling] => (object value omitted) [attributes] => (object value omitted) [ownerDocument] => (object value omitted) [namespaceURI] => [prefix] => [localName] => option [baseURI] => [textContent] => Tekst B ) DOMElement Object ( [tagName] => option [schemaTypeInfo] => [nodeName] => option [nodeValue] => Tekst C [nodeType] => 1 [parentNode] => (object value omitted) [childNodes] => (object value omitted) [firstChild] => (object value omitted) [lastChild] => (object value omitted) [previousSibling] => (object value omitted) [nextSibling] => (object value omitted) [attributes] => (object value omitted) [ownerDocument] => (object value omitted) [namespaceURI] => [prefix] => [localName] => option [baseURI] => [textContent] => Tekst C ) |
Als ik in de Xpath query er echter @value achter zet verdwijnt mn veld naam

PHP:
1
2
3
| [code=php] $xpath->query("//select[@name='henk']/option/@value"); [/code] |