Как спарсить этот xml файл
Буду очень признателен за помощь с парсингом xml файла.
резюме
Программа rail-тарифф пакетно выдаёт примерно такой файл (привожу его часть, т.к. именно в ней все необходимые мне данные)
<PriceBlockResult>
<ResultsVector ItemsCount="2">
<PriceBlockLandResult Land="Россия" LandId="20" Direction="1" Road="0" IsTotal="false" TaxesInfoState="0" OtprId="1000" SendId="1" CP="0" FromStationPID="3442" ToStationPID="11424" GuardPriceEnabled="false" GuardPriceShowCheckBox="true">
<TariffResultFields ItemsCount="52">
<PriceBlockOutput FieldName="LandName" FieldDesc="Страна" OutValue="Россия"/>
<PriceBlockOutput FieldName="FromStationPID" FieldDesc="Наименование" OutValue="3442"/>
<PriceBlockOutput FieldName="ToStationPID" FieldDesc="Наименование" OutValue="11424"/>
<PriceBlockOutput FieldName="Distance" FieldDesc="Расстояние\n(км)" OutValue="1055"/>
<PriceBlockOutput FieldName="CalcDsc" FieldDesc="ВИД" OutValue="10-01p.2"/>
<PriceBlockOutput FieldName="BasePrice" FieldDesc="Провозная \n плата" OutValue="276672"/>
<PriceBlockOutput FieldName="AddDues" FieldDesc="Доп.Сборы" OutValue="0"/>
<PriceBlockOutput FieldName="AddDues\NDS" FieldDesc="Доп.Сборы \n НДС" OutValue="0"/>
<PriceBlockOutput FieldName="TariffOwnerPrice" FieldDesc="Ставка\nсобственника" OutValue="0"/>
<PriceBlockOutput FieldName="BasePerT" FieldDesc="За 1т\nпров. платы" OutValue="678,12"/>
<PriceBlockOutput FieldName="WagonDieselElPrice" FieldDesc="ДГВ" OutValue="0"/>
<PriceBlockOutput FieldName="EmptyWagonGRPSPrice" FieldDesc="Порожние\nвагоны" OutValue="0"/>
<PriceBlockOutput FieldName="EmptyWagonGRPSPrice\NDS" FieldDesc="Порожние\nвагоны (НДС)" OutValue="0"/>
<PriceBlockOutput FieldName="GuardPrice" FieldDesc="Охрана" OutValue="0"/>
<PriceBlockOutput FieldName="GuardPrice\NDS" FieldDesc="Охрана\nНДС" OutValue="0"/>
<PriceBlockOutput FieldName="TotalPriceWoNDS" FieldDesc="Итого без\n НДС" OutValue="276672"/>
<PriceBlockOutput FieldName="NDS" FieldDesc="НДС" OutValue="55334,4"/>
<PriceBlockOutput FieldName="TotalPrice" FieldDesc="Итого" OutValue="332006,4"/>
<PriceBlockOutput FieldName="PerT" FieldDesc="За 1т" OutValue="813,74"/>
<PriceBlockOutput FieldName="ABBR" FieldDesc="Валюта " OutValue="RUB"/>
<PriceBlockOutput FieldName="OTPRCaption" FieldDesc="Вид \n отправки" OutValue="Повагонная"/>
<PriceBlockOutput FieldName="SendCaption" FieldDesc="Тип \n отправки" OutValue="В универсальных вагонах"/>
<PriceBlockOutput FieldName="ExitRouteType" FieldDesc="Отправительский\nмаршрут" OutValue="0"/>
<PriceBlockOutput FieldName="ContTrain" FieldDesc="Контейнерный\nпоезд" OutValue=""/>
<PriceBlockOutput FieldName="ETSNG" FieldDesc="Код ЕТСНГ" OutValue="232431"/>
<PriceBlockOutput FieldName="ETDesc" FieldDesc="Наименование ЕТСНГ" OutValue="Щебень, не поименованный в алфавите"/>
<PriceBlockOutput FieldName="Class" FieldDesc="Класс груза" OutValue="1"/>
<PriceBlockOutput FieldName="GNG" FieldDesc="Код ГНГ" OutValue="25171010"/>
<PriceBlockOutput FieldName="GNGDesc" FieldDesc="Наименование ГНГ" OutValue="Галька, гравий, щебень"/>
<PriceBlockOutput FieldName="Weight" FieldDesc="Масса\nгруза (т)" OutValue="68"/>
<PriceBlockOutput FieldName="UnloadD" FieldDesc="Из-под выгрузки\nпод погрузку" OutValue="0"/>
<PriceBlockOutput FieldName="FromCargoCode" FieldDesc="Код ЕТСНГ" OutValue="000000"/>
<PriceBlockOutput FieldName="FromCargoGngCode" FieldDesc="Код ГНГ" OutValue="00000000"/>
<PriceBlockOutput FieldName="DANGDesc" FieldDesc="Опасный" OutValue=" Не определен"/>
<PriceBlockOutput FieldName="ContTypeId" FieldDesc="Спецконтейнер?" OutValue="0"/>
<PriceBlockOutput FieldName="ContTypeName" FieldDesc="Тип контейнера" OutValue="-"/>
<PriceBlockOutput FieldName="ContDsc" FieldDesc="Контейнер" OutValue="-"/>
<PriceBlockOutput FieldName="ContOwner" FieldDesc="Принадлежность\nконтейнера" OutValue="-"/>
<PriceBlockOutput FieldName="ContCount" FieldDesc="Количеcтво\nконтейнеров" OutValue="-"/>
<PriceBlockOutput FieldName="VagonDsc" FieldDesc="Вагон" OutValue="полувагон"/>
<PriceBlockOutput FieldName="ContvagonDsc" FieldDesc="Платформа" OutValue=""/>
<PriceBlockOutput FieldName="CarCnt" FieldDesc="Количество\nПС" OutValue="6"/>
<PriceBlockOutput FieldName="VSCount" FieldDesc="ПС в\nотправке" OutValue="6"/>
<PriceBlockOutput FieldName="GP" FieldDesc="Г/п (т)" OutValue="70"/>
<PriceBlockOutput FieldName="VagonOwner" FieldDesc="Принадлежность" OutValue="Инвентарного парка"/>
<PriceBlockOutput FieldName="OwnerId" FieldDesc="Собственник (Вагон) Id" OutValue="1"/>
<PriceBlockOutput FieldName="OwnerFirmV" FieldDesc="Собственник (Вагон) FirmV" OutValue="1"/>
<PriceBlockOutput FieldName="OwnerFirmVDSC" FieldDesc="Собственник (Вагон) VDCS" OutValue="Любой, кроме перечисленных"/>
<PriceBlockOutput FieldName="FWOwnP" FieldDesc="Собственник (Контейнер) Id" OutValue="1"/>
<PriceBlockOutput FieldName="FWOwnerFirmP" FieldDesc="Собственник (Контейнер) FirmV" OutValue="0"/>
<PriceBlockOutput FieldName="FWOwnerFirmPDSC" FieldDesc="Собственник (Контейнер) VDCS" OutValue=""/>
<PriceBlockOutput FieldName="ContvagonOwner" FieldDesc="Принадлежность платформы" OutValue="Инвентарного парка"/>
</TariffResultFields>
<TaxesInfo ItemsCount="19">
<PriceBlockTaxesInfo TaxId="6" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="8" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="9" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="15" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="28" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="29" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="73" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="74" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="78" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="94" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="100" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="108" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="130" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="131" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="146" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="147" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="148" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="153" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
<PriceBlockTaxesInfo TaxId="154" ParamValue="" Price="0" Price_Nds="0" Price_CurrencyCode="0" UserPrice="0" UserPrice_Nds="0" UserPrice_CurrencyCode="0"/>
</TaxesInfo>
<TaxesClassif ItemsCount="2">
<PriceBlockTaxesClassif TaxId="51" Abbr="" Caption="Сбор за взвешивание" ParamType="1">
<RefBookStrings ItemsCount="3">
<String Value="1-вагонов, поданных локомотивом, принадл. федеральному жд транспорту"/>
<String Value="2-вагонов, поданных локомотивом, не принадл. федеральному жд транспорту"/>
<String Value="3-грузов и тары на товарных весах"/>
</RefBookStrings>
</PriceBlockTaxesClassif>
<PriceBlockTaxesClassif TaxId="10" Abbr="RUB" Caption="Сбор за объявление ценности груза" ParamType="2">
<RefBookStrings ItemsCount="0"/>
</PriceBlockTaxesClassif>
</TaxesClassif>
<TariffDetails ItemsCount="45">
<String Value=" 4 сут. (на 1055 км). Суточный пробег 310 км"/>
<String Value=" 2 сут. на операции, связанные с отправлением и прибытием"/>
<String Value=" Итого. Срок доставки 6 сут."/>
<String Value=" "/>
<String Value=" При перевозке грузов по железнодорожному участку Журавка - Миллерово кратчайшее расстояние определяется с учетом расстояния участка Журавка - Зайцевка - Кутейниково – Миллерово."/>
<String Value=" ВНИМАНИЕ! РАСЧЕТ ЗАВИСИТ ОТ ГРУЗОПОДЪЕМНОСТИ ВАГОНА. ОТКОРРЕКТИРУЙТЕ ЕЕ ПРИ НЕОБХОДИМОСТИ."/>
<String Value=" Расчетная масса 70,00 т. (Минимальная весовая норма по г/п вагона)"/>
<String Value=" Схема 8-Перевозка грузов в универсальных вагонах 10252 RUB"/>
<String Value=" Величина изменения платы на расстояние 1000 км [9535 * -0,02 = -190,70] "/>
<String Value=" Величина изменения платы на расстояние 1055 км [10252 * 0 = 0] "/>
<String Value="- 190,70 Величина уменьшения платы при отправке из 6-20 вагонов 10061,3 RUB"/>
<String Value="* 0,75 Коэффициент для первого класса в зависимости от расстояния 7545,98 RUB"/>
<String Value="* 0,77 Коэффициент на перевозку материалов и сырья минерально-строительных 5810,4 RUB"/>
<String Value="* 0,909 Коэффициент на перевозку материалов минерально-строительных природных, золы, шлаков, сырья минерального промышленного 5281,65 RUB"/>
<String Value="* 4,5476 Коэффициент индексации 24018,85 RUB"/>
<String Value="* 1,02 Коэффициент индексации 24499,23 RUB"/>
<String Value="* 1,015 Дополнительный коэффициент индексации 24866,72 RUB"/>
<String Value=" Итого 24866,72 RUB"/>
<String Value=" Схема 25(1)-Пробег порожних вагонов за 60% от расстояния перевозки груза 499 RUB"/>
<String Value=" Величина изменения платы на расстояние 510 км [406 * -0,03 = -12,18] "/>
<String Value=" Величина изменения платы на расстояние 633 км [499 * -0,02 = -9,98] "/>
<String Value="- 12,18 Величина уменьшения платы при отправке из 6-20 вагонов 486,82 RUB"/>
<String Value="* 1,06 Коэффициент на порожний пробег полувагонов 516,03 RUB"/>
<String Value="* 4,5476 Коэффициент индексации 2346,69 RUB"/>
<String Value="* 1,02 Коэффициент индексации 2393,63 RUB"/>
<String Value="* 1,015 Дополнительный коэффициент индексации 2429,53 RUB"/>
<String Value=" Итого 9718,13 RUB"/>
<String Value=" Схема В4-Тариф за использование полувагона 2542 RUB"/>
<String Value="* 4,5476 Коэффициент индексации 11560 RUB"/>
<String Value="* 1,02 Коэффициент индексации 11791,2 RUB"/>
<String Value="* 1,015 Дополнительный коэффициент индексации 11968,07 RUB"/>
<String Value=" Итого 11968,07 RUB"/>
<String Value=" Итого: Сумма схем 46552,92 RUB"/>
<String Value="- 441,00 Скидка с общего тарифа на универсальные вагоны 46111,92 RUB"/>
<String Value=" Итого 46112 RUB"/>
<String Value=" Сумма за все вагоны 276672 RUB"/>
<String Value=" Итого: Провозная плата 276672 RUB"/>
<String Value="% 20,00 НДС 55334,4 RUB"/>
<String Value=" Итого 332006,4 RUB"/>
<String Value=" "/>
<String Value=" Стоимость перевозки без НДС 276672 RUB"/>
<String Value=" НДС 55334,4 RUB"/>
<String Value=" Стоимость перевозки 332006,4 RUB"/>
<String Value=" Итого за тонну без НДС 678,12 RUB"/>
<String Value=" Итого за тонну 813,74 RUB"/>
</TariffDetails>
</PriceBlockLandResult>
а если точнее, меня интересует только эта часть из выше приведенного кода
<TariffResultFields ItemsCount="52">
<PriceBlockOutput FieldName="LandName" FieldDesc="Страна" OutValue="Россия"/>
<PriceBlockOutput FieldName="FromStationPID" FieldDesc="Наименование" OutValue="3442"/>
<PriceBlockOutput FieldName="ToStationPID" FieldDesc="Наименование" OutValue="11424"/>
<PriceBlockOutput FieldName="Distance" FieldDesc="Расстояние\n(км)" OutValue="1055"/>
<PriceBlockOutput FieldName="CalcDsc" FieldDesc="ВИД" OutValue="10-01p.2"/>
<PriceBlockOutput FieldName="BasePrice" FieldDesc="Провозная \n плата" OutValue="276672"/>
<PriceBlockOutput FieldName="AddDues" FieldDesc="Доп.Сборы" OutValue="0"/>
<PriceBlockOutput FieldName="AddDues\NDS" FieldDesc="Доп.Сборы \n НДС" OutValue="0"/>
<PriceBlockOutput FieldName="TariffOwnerPrice" FieldDesc="Ставка\nсобственника" OutValue="0"/>
<PriceBlockOutput FieldName="BasePerT" FieldDesc="За 1т\nпров. платы" OutValue="678,12"/>
<PriceBlockOutput FieldName="WagonDieselElPrice" FieldDesc="ДГВ" OutValue="0"/>
<PriceBlockOutput FieldName="EmptyWagonGRPSPrice" FieldDesc="Порожние\nвагоны" OutValue="0"/>
<PriceBlockOutput FieldName="EmptyWagonGRPSPrice\NDS" FieldDesc="Порожние\nвагоны (НДС)" OutValue="0"/>
<PriceBlockOutput FieldName="GuardPrice" FieldDesc="Охрана" OutValue="0"/>
<PriceBlockOutput FieldName="GuardPrice\NDS" FieldDesc="Охрана\nНДС" OutValue="0"/>
<PriceBlockOutput FieldName="TotalPriceWoNDS" FieldDesc="Итого без\n НДС" OutValue="276672"/>
<PriceBlockOutput FieldName="NDS" FieldDesc="НДС" OutValue="55334,4"/>
<PriceBlockOutput FieldName="TotalPrice" FieldDesc="Итого" OutValue="332006,4"/>
<PriceBlockOutput FieldName="PerT" FieldDesc="За 1т" OutValue="813,74"/>
<PriceBlockOutput FieldName="ABBR" FieldDesc="Валюта " OutValue="RUB"/>
<PriceBlockOutput FieldName="OTPRCaption" FieldDesc="Вид \n отправки" OutValue="Повагонная"/>
<PriceBlockOutput FieldName="SendCaption" FieldDesc="Тип \n отправки" OutValue="В универсальных вагонах"/>
<PriceBlockOutput FieldName="ExitRouteType" FieldDesc="Отправительский\nмаршрут" OutValue="0"/>
<PriceBlockOutput FieldName="ContTrain" FieldDesc="Контейнерный\nпоезд" OutValue=""/>
<PriceBlockOutput FieldName="ETSNG" FieldDesc="Код ЕТСНГ" OutValue="232431"/>
<PriceBlockOutput FieldName="ETDesc" FieldDesc="Наименование ЕТСНГ" OutValue="Щебень, не поименованный в алфавите"/>
<PriceBlockOutput FieldName="Class" FieldDesc="Класс груза" OutValue="1"/>
<PriceBlockOutput FieldName="GNG" FieldDesc="Код ГНГ" OutValue="25171010"/>
<PriceBlockOutput FieldName="GNGDesc" FieldDesc="Наименование ГНГ" OutValue="Галька, гравий, щебень"/>
<PriceBlockOutput FieldName="Weight" FieldDesc="Масса\nгруза (т)" OutValue="68"/>
<PriceBlockOutput FieldName="UnloadD" FieldDesc="Из-под выгрузки\nпод погрузку" OutValue="0"/>
<PriceBlockOutput FieldName="FromCargoCode" FieldDesc="Код ЕТСНГ" OutValue="000000"/>
<PriceBlockOutput FieldName="FromCargoGngCode" FieldDesc="Код ГНГ" OutValue="00000000"/>
<PriceBlockOutput FieldName="DANGDesc" FieldDesc="Опасный" OutValue=" Не определен"/>
<PriceBlockOutput FieldName="ContTypeId" FieldDesc="Спецконтейнер?" OutValue="0"/>
<PriceBlockOutput FieldName="ContTypeName" FieldDesc="Тип контейнера" OutValue="-"/>
<PriceBlockOutput FieldName="ContDsc" FieldDesc="Контейнер" OutValue="-"/>
<PriceBlockOutput FieldName="ContOwner" FieldDesc="Принадлежность\nконтейнера" OutValue="-"/>
<PriceBlockOutput FieldName="ContCount" FieldDesc="Количеcтво\nконтейнеров" OutValue="-"/>
<PriceBlockOutput FieldName="VagonDsc" FieldDesc="Вагон" OutValue="полувагон"/>
<PriceBlockOutput FieldName="ContvagonDsc" FieldDesc="Платформа" OutValue=""/>
<PriceBlockOutput FieldName="CarCnt" FieldDesc="Количество\nПС" OutValue="6"/>
<PriceBlockOutput FieldName="VSCount" FieldDesc="ПС в\nотправке" OutValue="6"/>
<PriceBlockOutput FieldName="GP" FieldDesc="Г/п (т)" OutValue="70"/>
<PriceBlockOutput FieldName="VagonOwner" FieldDesc="Принадлежность" OutValue="Инвентарного парка"/>
<PriceBlockOutput FieldName="OwnerId" FieldDesc="Собственник (Вагон) Id" OutValue="1"/>
<PriceBlockOutput FieldName="OwnerFirmV" FieldDesc="Собственник (Вагон) FirmV" OutValue="1"/>
<PriceBlockOutput FieldName="OwnerFirmVDSC" FieldDesc="Собственник (Вагон) VDCS" OutValue="Любой, кроме перечисленных"/>
<PriceBlockOutput FieldName="FWOwnP" FieldDesc="Собственник (Контейнер) Id" OutValue="1"/>
<PriceBlockOutput FieldName="FWOwnerFirmP" FieldDesc="Собственник (Контейнер) FirmV" OutValue="0"/>
<PriceBlockOutput FieldName="FWOwnerFirmPDSC" FieldDesc="Собственник (Контейнер) VDCS" OutValue=""/>
<PriceBlockOutput FieldName="ContvagonOwner" FieldDesc="Принадлежность платформы" OutValue="Инвентарного парка"/>
</TariffResultFields>
логика моя такова: пройтись по этому участку xml файла, присвоить переменным интересующие меня значения, записать их в базу данных.
проблема заключается в том, что я не знаю как обратиться к определённым
PriceBlockOutput, все мне не нужны.
подскажите, пожалуйста, как обратиться к определенному участку xml файла по значению атрибута, по факту меня интересуют строки с атрибутами:
FromStationPID
ToStationPID
Distance
PerT
Weight
VSCount
все остальные мне не нужны.
<?php
require_once( "mysql_conn.php" );
$feedObj = simplexml_load_file("price.xml");
foreach ($feedObj->PriceBlock->Results->PriceBlockResult as $offer) {
echo '<pre>';
foreach ($offer->ResultsVector->PriceBlockLandResult->TariffResultFields->PriceBlockOutput as $offers) {
print_r($offers);
}
echo '<pre>';
}
?>
мой код выше, я чисто обращался к тем или иным строкам xml, но сейчас уперся именно в возможность обращения к определённой строке, отфильтрованной по значению атрибута.
Премного благодарю.