XML проблема с двоеточием в именах нодов

29.09.2017 06:21:28

Столкнулся с тем, что в XML файле в названии некоторых ключей/нодов оказались двоеточия, и php функция simplexml из не увидела (не вернула).

Пример:

 
<OldNumbers>
    <num:OldNumber Type="01" Number="82" />
</OldNumbers>

Решение 1е. "Костыльное":

 
    //$oXml = simplexml_load_file($sFile);
    $sText = file_get_contents('in/kv_0255fd9d-3d80-42c0-845a-4ceb4479c3aa.xml');
    $sText = str_replace('<adrs:', '<adrs_', $sText);
    $sText = str_replace('</adrs:', '</adrs_', $sText);
    $sText = str_replace('<num:', '<num_', $sText);
    $sText = str_replace('</num:', '</num_', $sText);
    $oXml = new SimpleXMLElement($sText);
    ...

Решение 2е. "Верное":

file.php (Download)

 <? 

  error_reporting(E_ALL);
  ini_set('display_errors', 'On');
  
  $sFile = 'in/kv_0255fd9d-3d80-42c0-845a-4ceb4479c3aa.xml';

  $oXml = simplexml_load_file($sFile);
  
  $Area = $oXml->Realty->Flat->Area;
  $FamilyName = @$oXml->Realty->Flat->Rights->Right->Owners->Owner->Person->FamilyName;
  $FirstName = @$oXml->Realty->Flat->Rights->Right->Owners->Owner->Person->FirstName;
  $Patronymic = @$oXml->Realty->Flat->Rights->Right->Owners->Owner->Person->Patronymic;
  
  //$aAttr = $oXml->Realty->Flat->OldNumbers->num_OldNumber->attributes();
  //$Number1 = $aAttr['Number'];

  $entry = $oXml->Realty->Flat->OldNumbers;
  $namespaces = $entry->getNameSpaces(true);
  $aAttr = $entry->children($namespaces['num'])->attributes();
  $Number1 = $aAttr['Number'];

  
  //$aAttr = $oXml->Realty->Flat->Address->adrs_Apartment->attributes();
  //$Number2 = $aAttr['Value'];

  $entry = $oXml->Realty->Flat->Address;
  $namespaces = $entry->getNameSpaces(true);
  $aAttr = $entry->children($namespaces['adrs'])->Apartment->attributes();
  $Number2 = $aAttr['Value'];

  echo $Number1.'<br />';
  echo $Number2.'<br />';

Есть системные пометки.

Пример файла

file.xml (Download)

 <?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://portal.rosreestr.ru/xsl/EGRP/Reestr_Extract_Big/ROOM/07/Common.xsl"?>

<KPOKS xmlns="urn://x-artefacts-rosreestr-ru/outgoing/kpoks/4.0.1"
xmlns:smev="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1"
xmlns:num="urn://x-artefacts-rosreestr-ru/commons/complex-types/numbers/1.0"
xmlns:adrs="urn://x-artefacts-rosreestr-ru/commons/complex-types/address-output/4.0.1"
xmlns:spa="urn://x-artefacts-rosreestr-ru/commons/complex-types/entity-spatial/5.0.1"
xmlns:param="urn://x-artefacts-rosreestr-ru/commons/complex-types/parameters-oks/2.0.1"
xmlns:cer="urn://x-artefacts-rosreestr-ru/commons/complex-types/certification-doc/1.0"
xmlns:doc="urn://x-artefacts-rosreestr-ru/commons/complex-types/document-output/4.0.1"
xmlns:flat="urn://x-artefacts-rosreestr-ru/commons/complex-types/assignation-flat/1.0.1"
xmlns:ch="urn://x-artefacts-rosreestr-ru/commons/complex-types/cultural-heritage/2.0.1">
<Realty>
<Flat CadastralNumber="77:02:0023008:1961" State="01"
DateCreated="2012-05-24"
>
<CadastralBlock>77:02:0023008</CadastralBlock>
<ObjectType>002001003000</ObjectType>
<ParentCadastralNumbers>
<CadastralNumberOKS>77:02:0023008:1024</CadastralNumberOKS>
</ParentCadastralNumbers>
<OldNumbers>
<num:OldNumber Type="01" Number="82" />
</OldNumbers>
<Assignation>
<flat:AssignationCode>206002000000</flat:AssignationCode>
<flat:AssignationType>205001000000</flat:AssignationType>
</Assignation>
<Area>52.5</Area>
<Address>
<adrs:OKATO>45280552000</adrs:OKATO>
<adrs:KLADR>77000000000178300</adrs:KLADR>
<adrs:PostalCode>129164</adrs:PostalCode>
<adrs:Region>77</adrs:Region>
<adrs:UrbanDistrict Name="Алексеевский" Type="р-н" />
<adrs:Street Name="Маломосковская" Type="ул" />
<adrs:Level1 Type="д" Value="5" />
<adrs:Apartment Type="кв" Value="82" />
</Address>
<PositionInObject>
<Levels>
<Level Number="11" Type="01">
<Position NumberOnPlan="0015230/0082">
</Position>
</Level>
</Levels>
</PositionInObject>
<CadastralCost Value="10672799.03" Unit="383" />
<Rights>
<Right>
<Name>Собственность</Name>
<Type>001001000000</Type>
<Owners>
<Owner>
<Person>
<FamilyName>Стрючкова</FamilyName>
<FirstName>Ирина</FirstName>
<Patronymic>Анатольевна</Patronymic>
</Person>
</Owner>
</Owners>
<Registration>
<RegNumber>77-77-08/061/2014-670</RegNumber>
<RegDate>2014-08-14</RegDate>
</Registration>
</Right>
</Rights>
</Flat>
</Realty>
<CertificationDoc>
<cer:Organization>ФГИС ЕГРН</cer:Organization>
<cer:Date>2017-09-26</cer:Date>
<cer:Number>99/2017/29340103</cer:Number>
</CertificationDoc>
<CoordSystems>
<spa:CoordSystem Name="СК кадастрового округа" CsId="ID0" />
</CoordSystems>
<eDocument CodeType="112" Version="07" Scope="GKN">
<Sender Kod="00.0.4.195"
Name="ФГИС ЕГРН"
Region="99"
Date_Upload="2017-09-26"
Appointment="Государственный регистратор"
/>
<Recipient Kod="00.0.4.111" Name="Смирнова Татьяна Сергеевна" />
</eDocument>
<ReestrExtract>
<DeclarAttribute ID_KUVI="0"
ExtractTypeCode="012000"
ExtractTypeText="Выписка из Единого государственного реестра недвижимости об объекте недвижимости"
ExtractNumber="99/2017/29340103"
ExtractDate="26.09.2017"
RequeryNumber="80-15915227"
RequeryDate="26.09.2017"
ExtractCount="1"
NoticeCount="0"
RefuseCount="0"
Registrator="ФГИС ЕГРН">
<ReceivName>Смирнова Татьяна Сергеевна</ReceivName>
<ReceivAdress>не указан</ReceivAdress>
</DeclarAttribute>
<ExtractObjectRight>
<HeadContent>
<ID_REC_KUVI>0</ID_REC_KUVI>
<Title>ФЕДЕРАЛЬНАЯ СЛУЖБА ГОСУДАРСТВЕННОЙ РЕГИСТРАЦИИ, КАДАСТРА И КАРТОГРАФИИ</Title>
<DeptName>ФГИС ЕГРН</DeptName>
<ExtractTitle>Выписка из Единого государственного реестра недвижимости об объекте недвижимости</ExtractTitle>
<Content>На основании запроса от 26.09.2017 г., поступившего на рассмотрение 26.09.2017 г., сообщаем, что согласно записям Единого государственного реестра недвижимости:</Content>
</HeadContent>
<ExtractObject>
<ObjectRight>
<Right RightNumber="1">
<Owner >
<ID_Subject>15268581277</ID_Subject>
<Person>
<Code_SP>007003000000</Code_SP>
<Content>Стрючкова Ирина Анатольевна</Content>
<FIO>
<Surname>Стрючкова</Surname>
<First>Ирина</First>
<Patronymic>Анатольевна</Patronymic>
</FIO>
</Person>
</Owner>
<Registration >
<ID_Record>258660328777</ID_Record>
<RegNumber>77-77-08/061/2014-670</RegNumber>
<Type>001001000000</Type>
<Name>Собственность, № 77-77-08/061/2014-670 от 14.08.2014</Name>
<RegDate>14.08.2014</RegDate>
</Registration>
<NoEncumbrance>не зарегистрировано</NoEncumbrance>
</Right>
<NoShareHolding>не зарегистрировано</NoShareHolding>
</ObjectRight>
<RightAssert>данные отсутствуют</RightAssert>
<RightClaim>данные отсутствуют</RightClaim>
<RightAgainst>данные отсутствуют</RightAgainst>
<RightSteal>данные отсутствуют</RightSteal>
<WithoutThirdParty>данные отсутствуют</WithoutThirdParty>
<InabilityRegWithoutOwner></InabilityRegWithoutOwner>
<InabilityRegZU></InabilityRegZU>
</ExtractObject>
<InfoENK/>
<InfoPIK/>
<FootContent>
<Recipient>Смирнова Татьяна Сергеевна</Recipient>
<ExtractDate>26.09.2017</ExtractDate>
<Content></Content>
</FootContent>
</ExtractObjectRight>
</ReestrExtract>
</KPOKS>


Категории: PHP
Яндекс.Метрика