Ich bin mir bewusst, es gibt viele ähnliche Beiträge, jedoch konnte ich keine der Vorschläge erfolgreich implementieren.Parse XML-Namespace und Schema in PHP
Ich habe folgenden Auszug von Daten - XML mit zwei Datensätze verfügbar here:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<message:MessageGroup xmlns:message="http://www.SDMX.org/resources/SDMXML/schemas/v1_0/message" xmlns:common="http://www.SDMX.org/resources/SDMXML/schemas/v1_0/common" xmlns:frb="http://www.federalreserve.gov/structure/compact/common" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.SDMX.org/resources/SDMXML/schemas/v1_0/message SDMXMessage.xsd http://www.federalreserve.gov/structure/compact/common frb_common.xsd">
<?frb EmbargoDate="2017-10-24T00:00:00"?>
<frb:DataSet id="Yields" xmlns:kf="http://www.federalreserve.gov/structure/compact/Yields_Yields" xsi:schemaLocation="http://www.federalreserve.gov/structure/compact/Yields_Yields Yields_Yields.xsd">
</frb:DataSet>
<frb:DataSet id="Yields" xmlns:kf="http://www.federalreserve.gov/structure/compact/Yields_Parameters" xsi:schemaLocation="http://www.federalreserve.gov/structure/compact/Yields_Parameters Yields_Parameters.xsd">
<kf:Series BT="Nominal" CURRENCY="NA" FREQ="9" Parameter="B0" SERIES_NAME="BETA0" UNIT="Number" UNIT_MULT="1">
<frb:Annotations>
<common:Annotation>
<common:AnnotationType>Short Description</common:AnnotationType>
<common:AnnotationText>Beta0 Coefficient for Nominal Treasury Yields as Estimated by the Svensson Term Structure Model</common:AnnotationText>
</common:Annotation>
</frb:Annotations>
<frb:Obs OBS_STATUS="A" OBS_VALUE="3.91760612" TIME_PERIOD="1961-06-14"/>
<frb:Obs OBS_STATUS="A" OBS_VALUE="3.97849787" TIME_PERIOD="1961-06-15"/>
<frb:Obs OBS_STATUS="A" OBS_VALUE="3.98435045" TIME_PERIOD="1961-06-16"/>
<frb:Obs OBS_STATUS="A" OBS_VALUE="4.00437935" TIME_PERIOD="1961-06-19"/>
<frb:Obs OBS_STATUS="A" OBS_VALUE="3.98578922" TIME_PERIOD="1961-06-20"/>
<frb:Obs OBS_STATUS="A" OBS_VALUE="4.00405894" TIME_PERIOD="1961-06-21"/>
<frb:Obs OBS_STATUS="A" OBS_VALUE="4.00089634" TIME_PERIOD="1961-06-22"/>
</kf:Series>
</frb:DataSet>
</message:MessageGroup>
YieldsParameters.xsd Datei extrahiert:
xmlns:frb="http://www.federalreserve.gov/structure/compact/common">
<xs:import namespace="http://www.federalreserve.gov/structure/compact/common" schemaLocation="frb_common.xsd"/>
Ich bin daran interessiert, die OBS_VALUE und TIME_PERIOD Attribute in Abrufen aus dem 2. Datensatz. Ich möchte auch die Beobachtungen innerhalb der Reihen zählen.
Mit dem following suggestion meine Code-Beispiel sieht wie folgt aus:
$myFileXml = 'feds200628.xml';
$xml = simplexml_load_file($myFileXml);
$xml->DataSet[1]->Series[0] as $Ser
$ns_dc = $Ser ->children('http://www.federalreserve.gov/structure/compact/common');
echo $ns_dc->Obs[0]->->Attributes()->OBS_VALUE;
echo $count = count($xml->children('http://www.federalreserve.gov/structure/compact/common',true)->DataSet[1]->Series[0]->Obs);
bedenkt, dass ich abrufen nicht den Beobachtungswert und der Zählwert 0 zurück, ich glaube ich etwas sehr einfach hier fehle. Ich finde es auch komisch, dass
print_r($xml);
kehrt:
SimpleXMLElement Object ([frb] => SimpleXMLElement Object() [Kommentar] => SimpleXMLElement Object())
perfekt, danke – bgolfb
OK - können Sie diese Antwort akzeptieren, wenn es Ihr Problem löst. Vielen Dank –