Я пытаюсь использовать XPath в PHP SimpleXML с файлом XML, из которых следующее является соответствующий фрагмент: -XPath с пространством имен
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Created on 21-Mar-2012 10:30:46
-->
- <message:Structure xmlns="http://www.SDMX.org/resources/SDMXML/schemas/v2_0/structure" xmlns:message="http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message" xsi:schemaLocation="http://www.SDMX.org/resources/SDMXML/schemas/v2_0/structure http://www.sdmx.org/docs/2_0/SDMXStructure.xsd http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message http://www.sdmx.org/docs/2_0/SDMXMessage.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <Header xmlns="http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message">
<ID>none</ID>
<Test>false</Test>
<Truncated>false</Truncated>
<Prepared>2011-11-18T13:56:45</Prepared>
- <Sender id="OECD">
<Name xml:lang="en">Organisation for Economic Co-operation and Development</Name>
<Name xml:lang="fr">Organisation de coopération et de développement économiques</Name>
</Sender>
</Header>
- <message:CodeLists>
- <CodeList id="CL_MEI_OBS_STATUS" agencyID="OECD">
<Name xml:lang="en">Observation Status</Name>
<Name xml:lang="fr">Statut d'observation</Name>
- <Code value="B">
<Description xml:lang="en">Break</Description>
<Description xml:lang="fr">Rupture</Description>
</Code>
etc. etc.
В моем PHP код я следующее, регистрирующего пространство имен затем использует xpath для получения CodeLists: - $ xml-> registerXPathNamespace ('test', 'http: //www.SDMX.org/resources/SDMXML/schemas/v2_0/message');
$ codelistspath = $ xml-> xpath ('test: CodeLists');
Я хотел бы быть в состоянии использовать XPath для перехода на один уровень ниже в дереве, т.е. к Codelist и думал следующее будет работать: -
$ codelistpath = $ xml-> XPATH ('тест: Списки кодов/Codelist ');
Но он просто создает пустой массив. Я не могу найти доступ к чему-либо еще в документе с помощью xpath. Я потратил часы, пытаясь решить эту проблему, поэтому любая помощь будет принята с благодарностью.
Это абсолютно правильно, я не понял, что CodeList находился в другом пространстве имен. Я изменил свой код, как вы предлагаете, и все работает сейчас. Я не могу тебя отблагодарить. – fbc