Archief - XML node d.m.v. PHP naar textarea

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Nightfall

Legacy Member
Beste mensen,

Ik zit vast na uren sleutelen een van mijn websites. En na vele pogingen door suggesties van mijn goede vriend Google, geef ik het voorlopig op.

Weet iemand hier toevallig hoe ik via PHP één node(?) uit een XML source kan nemen?

De XML source is geen bestand, het is een API link welke er zo uit ziet:
Code:
https://secure.mysite.com/api=keyid?action=getip

Het is ook niet de bedoeling dat ik de output ergens ga opslaan ofzo, het moet een eenmalige request blijven.

De XML code die dan komt is de volgende (lichtjes anoniem gemaakt), en hier zou ik dus graag het "IP" alleen willen tonen in een textbox d.m.v. een PHP functie.

Code:
<api>
<version>1.0</version>
<response>
<result module="ips" action="" type="select" code="1000">SUCCESS</result>
<details>
<detail>
<code>1000</code>
<description>IP details from: 11ID</description>
<id>11ID</id>
<server_pack_id>11ID</server_pack_id>
<server_name>11SNAME</server_name>
<ip_record>
<ip>[B][COLOR="white"]95.my.ip.here[/COLOR][/B]</ip>
<reverse_lookup>hosted-by.mydomain.com</reverse_lookup>
<ip_details>
<gateway>95.my.gateway.here</gateway>
<mask>255.my.mask.here</mask>
</ip_details>
</ip_record>
<ip_record>
<ip>95.my.ip.here</ip>
<reverse_lookup>hosted-by.mydomain.com</reverse_lookup>
</ip_record>
</detail>
</details>
</response>
</api>

Een antwoord als "gebruik simplexml eens" helpt me niet verder. Graag zie ik een lijntje code of 4, mocht iemand raad weten.

Alvast bedankt!

Nightfall

Legacy Member
Heb ik al gedaan, het gaf geen output aangezien hij (denk ik) de source niet kan lezen daar het geen xml bestand is, of ligt het misschien aan het feit dat het via ssl de output geeft?

Via libxml_use_internal_errors:
Code:
Failed loading XML failed to load external entity "mijn url hier"

Ik weet dat het poepsimpel zou moeten zijn, ik had simplexml daarom ook gebruikt met een extern xml bestand en dat werkte wel prima.

adrianhates

Legacy Member
enkele gedachte:

Hebt ge openssl op uw server geinstalleerd?
gebruikt ge misschien relatieve paden fzo? Als ge extern gaat ophalen zou ge denk ik bvb wel een absoluut path moeten opgeven.

Misschien uw code nekeer posten als het niet te lang is .. :)

Nightfall

Legacy Member
openssl: ja (zowel op mijn server/domein als server/domein van de xml)
url: absoluut

Op dit moment bestaat mijn xml code niet over meer dan dit: (eerder troubleshooting dan iets anders). Zolang hij nog eens niet aangeeft dat hij een XML vindt, kan er niets mee gedaan worden. Ik ben ook maar een noobje dus ik weet niet in hoeverre overige code relevant gaat zijn.

PHP:
libxml_use_internal_errors(true);

$url="https://full.url.to/myapi?action=dothis?key=45648945615616"; //fictief voorbeeld
$url=file_get_contents($url);
$sxe = simplexml_load_string($url);

var_dump($sxe); //return boolean(false)
	
if (!$sxe) {
    echo "Failed loading XML\n";
    foreach(libxml_get_errors() as $error) {
        echo "\t", $error->message;
    }
}

Output: (met file_get_contents, met simplexml_load_string)
var_dump - echo - $error
Code:
bool(false) Failed loading XML

Output: (zonder file_get_contents, met simplexml_load_file)
var_dump - echo - $error
Code:
bool(false) Failed loading XML failed to load external entity https://full.url.to/myapi?action=dothis?key=45648945615616

dJeez

Legacy Member
Waarom haal je die info eerst binnen via file_get_contents om ze dan als string te gaan parsen met simplexml? Waarom niet direct simplexml_load_file gebruiken met de URL as parameter (ervan uitgaande dat de URL wrappers actief zijn, maar ik moet de eerste degelijke hoster nog tegenkomen die die afzet)?

Daarnaast klopt de URL van je fictieve voorbeeld ook niet. Je kan geen 2 query strings gebruiken, als je meerdere parameters hebt dan geef je die gescheiden door ampersands (&) door (http://en.wikipedia.org/wiki/Query_string).

BTW libxml2 - failed to load external entity xml file - Stack Overflow

Nightfall

Legacy Member
De bedoeling was idd dat het enkel via simplexml_load_file zou gebeuren, maar daar ik niet wist of hij effectief de source als file zou zien dacht ik de source zeker via een string leesbaar te maken.

De url in het voorbeeld is idd verkeerd. De 2de en alle volgende parameters worden uiteraard via & gescheiden en niet ?. Een typo in het voorbeeld, niet in de praktijk.

Die laatste link die je gaf had ik idd ook al tegengekomen, maar nog niet toegepast (eerlijk gezegd weet ik niet hoe, leervoer voor morgen). Hartelijk bedankt voor de reacties!
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan