SimpleXML удаляет атрибуты глубоко в XML.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 SimpleXML удаляет атрибуты глубоко в XML.

Сообщение Anonymous »

У меня возникла проблема с преобразованием XML в JSON: атрибуты, глубоко вложенные в узлы XML, не включаются и не обрабатываются, а другие — включаются.

Код: Выделить всё

// SimpleXML tests
//$xml = simplexml_load_string($xmlData);
//$xml = new SimpleXMLElement($xmlData);
//$xml = simplexml_load_string($xmlData, 'SimpleXMLElement', LIBXML_NOENT | LIBXML_PARSEHUGE);
$xml = simplexml_load_string($xmlData, 'SimpleXMLElement', LIBXML_PARSEHUGE);
print json_encode($xml);
XML (длинный, поэтому я сократил его для удобства чтения)

Код: Выделить всё




















1








1209
0



0
0
0
0
1209
0

...
JSON

Код: Выделить всё

{
"@attributes": {
"MISMOReferenceModelIdentifier": "3.6.0365"
},
"DOCUMENT_SETS": {
"DOCUMENT_SET": {
"DOCUMENTS": {
"DOCUMENT": {
"DEAL_SETS": {
"DEAL_SET": {
"DEALS": {
"DEAL": {
"SERVICES": {
"SERVICE": {
"VALUATION": {
"VALUATION_RESPONSE": {
"VALUATION_ANALYSES": {
"VALUATION_ANALYSIS": {
"PROPERTIES": {
"PROPERTY": [
{
"@attributes": {
"ValuationUseType": "SubjectProperty"
},
"ENVIRONMENTAL_CONDITIONS": {
"ENVIRONMENTAL_CONDITION": {
"DistanceFromPropertyLinearMeasure":  "1"
}
},
"IMPROVEMENTS": {
"IMPROVEMENT": {
"PROPERTY_UNITS": {
"PROPERTY_UNIT": {
"LEVELS": {
"LEVEL": {
"LevelFinishedAreaMeasure": "1209",
"LevelUnfinishedAreaMeasure": "0"
}
},
"PROPERTY_UNIT_AREA": {
"UnitAboveGradeUnfinishedAreaMeasure": "0",
"UnitBelowGradeUnfinishedAreaMeasure": "0",
"UnitNonStandardAboveGradeFinishedAreaMeasure": "0",
"UnitNonStandardBelowGradeFinishedAreaMeasure": "0",
"UnitStandardAboveGradeFinishedAreaMeasure": "1209",
"UnitStandardBelowGradeFinishedAreaMeasure": "0"
}...
Я пробовал все вышеперечисленные PHP, и все они делают одно и то же. Результирующий JSON будет включать атрибуты в MESSAGE и узле PROPERTY->ValuationUseType, но не включать атрибуты в DistanceFromPropertyLinearMeasure->LinearUnitOfMeasureType, LevelFinishedAreaMeasure->AreaUnitOfMeasureType или UnitStandardAboveGradeFinishedAreaMeasure->AreaUnitOfMeasureType.
Они также не отображаются в print_r(), но я понимаю, что этого можно ожидать, судя по другим сообщениям здесь. По мнению некоторых, мне пришлось бы вручную получать эти атрибуты, но я стараюсь этого избежать, поскольку этот XML-код большой и может иметь атрибуты в разных местах.
Буду признателен за любую помощь. !

Подробнее здесь: https://stackoverflow.com/questions/792 ... in-the-xml
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»