【发布时间】:2013-12-20 18:05:09
【问题描述】:
嗨,我正在将一个 xml 提要解析为一个数组,它对我来说工作正常,但到目前为止我只有一个 xml 提要,但现在我有点卡在一个点上,因为我需要将多个 xml 合并为一个然后解析整个 xml 到一个数组中。在这里,我提供了一些我想要的示例代码。
XML1
<JobRecords>
<JobRecord>
<Brand>Corporate1</Brand>
<WorkTypes>
<WorkTypeRecord>
<Title>Permanent1</Title>
</WorkTypeRecord>
</WorkTypes>
</JobRecord>
</JobRecords>
XML2
<JobRecords>
<JobRecord>
<Brand>Corporate2</Brand>
<WorkTypes>
<WorkTypeRecord>
<Title>Permanent2</Title>
</WorkTypeRecord>
</WorkTypes>
</JobRecord>
</JobRecords>
XML3
<JobRecords>
<JobRecord>
<Brand>Corporate3</Brand>
<WorkTypes>
<WorkTypeRecord>
<Title>Permanent3</Title>
</WorkTypeRecord>
</WorkTypes>
</JobRecord>
</JobRecords>
合并我想要的 XML 作为输出
<JobRecords>
<JobRecord>
<Brand>Corporate1</Brand>
<WorkTypes>
<WorkTypeRecord>
<Title>Permanent1</Title>
</WorkTypeRecord>
</WorkTypes>
</JobRecord>
<JobRecord>
<Brand>Corporate2</Brand>
<WorkTypes>
<WorkTypeRecord>
<Title>Permanent2</Title>
</WorkTypeRecord>
</WorkTypes>
</JobRecord>
<JobRecord>
<Brand>Corporate3</Brand>
<WorkTypes>
<WorkTypeRecord>
<Title>Permanent3</Title>
</WorkTypeRecord>
</WorkTypes>
</JobRecord>
</JobRecords>
到目前为止,我已经尝试了下面的代码,它对我有用,但是生成组合 output.xml 需要花费太多时间。那么有没有其他方法可以通过更好的解决方案来实现这一目标。
function simplexml_merge(SimpleXMLElement &$xml1, SimpleXMLElement $xml2) {
// convert SimpleXML objects into DOM ones
$dom1 = new DomDocument('1.0', 'UTF-8');
$dom2 = new DomDocument('1.0', 'UTF-8');
$dom1->loadXML($xml1->asXML());
$dom2->loadXML($xml2->asXML());
// pull all child elements of second XML
$xpath = new domXPath($dom2);
$xpathQuery = $xpath->query('/*/*');
for ($i = 0; $i < $xpathQuery->length; $i++) {
// and pump them into first one
$dom1->documentElement->appendChild(
$dom1->importNode($xpathQuery->item($i), true));
}
$xml1 = simplexml_import_dom($dom1);
}
$xml1 = simplexml_load_file("xml1.xml", 'SimpleXMLElement', LIBXML_NOCDATA);
$xml2 = simplexml_load_file("xml2.xml", 'SimpleXMLElement', LIBXML_NOCDATA);
simplexml_merge($xml1, $xml2);
$xml1->asXml('output.xml');
请告诉我实现这一目标的最佳方法是什么。
提前致谢,非常感谢。
【问题讨论】:
-
嗨,Dh,好的开始!您可以查看
simplexml或DOM并尝试一些代码。如果您需要帮助,请编辑您的问题,展示您的尝试并具体指出您需要什么。 -
@michi 我已经用我迄今为止尝试过的代码更新了我的问题,请仔细研究一下。
标签: php xml arrays parsing xml-parsing