首页 > 解决方案 > PHP - 元素中带有点的 XML (Laravel)

问题描述

我将这个解析器包用于 Laravel:https ://github.com/orchestral/parser

我有一个如下所示的 XML:

<MilestonesFollow-upReportUSERDEFINEDItem>
     <NextMilestoneDescCur.Comp.InclRltd>Description of the stone</NextMilestoneDescCur.Comp.InclRltd>
</MilestonesFollow-upReportUSERDEFINEDItem>

但是,由于元素.名称中带有点,因此它会将其视为一个新元素。这就是我解析它的方式:

$data = $xml->parse([
     'milestones' => ['uses' => 'MilestonesFollow-upReportUSERDEFINEDItem[NextMilestoneDescCur.Comp.InclRltd]', 'default' => null]
]);

但是,这给了我下面的数组,它由点分隔.

array:1 [▼
  "milestones" => array:524 [▼
    0 => array:1 [▼
      "NextMilestoneDescCur" => array:1 [▼
        "Comp" => array:1 [▼
          "InclRltd" => null
        ]
      ]
    ]
]

标签: phpxmllaravel

解决方案


我创建了一个包,可以帮助您将 xml 解析为数组。

https://github.com/mtownsend5512/xml-to-array

$xml = '<MilestonesFollow-upReportUSERDEFINEDItem><NextMilestoneDescCur.Comp.InclRltd>Description of the stone</NextMilestoneDescCur.Comp.InclRltd></MilestonesFollow-upReportUSERDEFINEDItem>';

dd(xml_to_array($xml));
// Will yield: 

array:1 [▼
  "NextMilestoneDescCur.Comp.InclRltd" => "Description of the stone"
]

推荐阅读