【问题标题】:Creating XML File using simplexml_load_string, addChild, and addAttribute使用 simplexml_load_string、addChild 和 addAttribute 创建 XML 文件
【发布时间】:2013-01-27 08:46:41
【问题描述】:

这是我目前所拥有的:

这是我收到的输出:http://i.imgur.com/mGRAJPe.gif

似乎所有子字段节点都成为第一个数据字段元素的子节点,而不是嵌套在各自的数据字段父节点中。有什么建议吗?

$str = '<?xml version="1.0" encoding="UTF-8"?><collection     xmlns="http://www.loc.gov/MARC21/slim"><record></record></collection>';
$xml = simplexml_load_string($str);
$xml->record = "";
$xml->record->addChild('leader', $data["controlfield"]["000"]["40"]);

foreach ($data["controlfield"] as $dcf => $value) {
    foreach ($value as $dcfv) {
    $addControl = $xml->record->addChild('controlfield', $dcfv);
    $addControl->addAttribute('tag', $dcf);
    }
}

foreach ($data["datafield"] as $dftc => $dfarray) {
    $addData = $xml->record->addChild('datafield');
    $addData->addAttribute('tag', $dftc);
    $addData->addAttribute('ind1', $dfarray['ind1']);
    $addData->addAttribute('ind2', $dfarray['ind2']);

    foreach ($dfarray as $code => $value) {                         
        if(($code != "ind1") && ($code != "ind2")) {
        $addSubs = $xml->record->datafield->addChild('subfield', $value);
        $addSubs->addAttribute('code', $code);
        }
    }
}

【问题讨论】:

    标签: php xml simplexml addchild addattribute


    【解决方案1】:

    好吧,这就是你在这里所做的,你将datafield作为单个节点处理,所以使用第一个(为什么应该是最后一个?):

    $xml->record->datafield->addChild('subfield', $value);
    

    但是您已经在$addData 中有您想要的父母,只需使用它:

    $addData->addChild('subfield', $value);
    

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 2011-11-29
      • 2023-03-29
      • 1970-01-01
      • 2019-12-05
      • 2011-04-16
      • 2018-07-29
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多