Expression Engine SimpleXmlIterator坏了

时间:2014-04-30 20:30:39

标签: php xml expressionengine

这是我的第一个问题,我无法弄清楚如何根据指南与其他人联系。我想最后只是一个问题,即一个菜鸟是否应该试图干涉他们并不完全理解的代码。

我的网站依赖于其他地方生成的xml数据库,该数据库拼接成特定于网站的格式,由原始开发人员设置。生成数据库的系统将标签从“联系人”更改为“人”,打破了拼接的数据公式。 (GRR)

想到我修复了它,因为我更改了接收文件中的标记,但是拼接器刚刚完全停止了。 (基本上,我对网站/编​​码没有足够的了解,试图做出这些改变。但我认为我可以逃脱它!)

这是我理解的事情: 1.每晚我们将xml文件发送到文件夹中 2. php文件使用SimpleXmlIterator重新格式化原始xml。 3.将重新格式化的文件发送到staging.sql文件。 4.将其发送到正确的位置,以便网站每晚加载。

第4步仍在进行,但该网站反复使用相同的数据。新数据不是通过第2步和第3步。

这就是我所做的(我只是注释掉了原始代码。我是“SOC”):

$authors = array();
foreach ($author_array as $arr) {

  $bio = ($arr['copy_biography']) ? nl2br(htmlspecialchars($arr['copy_biography'], ENT_QUOTES)) : '';

  // SOC changed $author_title = $arr['contact_first_name'] .' '. $arr['contact_surname'];
  $author_title = $arr['person_first_name'] .' '. $arr['person_surname'];
  $authors[] = array(
    'title'     => $author_title,
    'author_id' => $arr['id'],
    // SOC changed from this to the below 'fname'     => $arr['contact_first_name'],
    'fname'     => $arr['person_first_name'],
    // SOC changed from this to the below 'lname'     => $arr['contact_surname'],
    'lname'     => $arr['person_surname'],
    // SOC ditto 'website'   => $arr['contact_web_page'],
    'website'   => $arr['person_web_page'],
    'bio'       => $bio,
    // SOC ditto 'twitter'   => $arr['contact_fax']
    'twitter'   => $arr['person_fax']
  );
}

$authors = generate_valid_xml_from_array($authors);
$authors_xml = '/var/www/hotkeybooks/biblio/authors_import.xml';
$authorfile = fopen($authors_xml,'w') or die("can't open file");
fwrite($authorfile,$authors);
fclose($authorfile);
//make the files readable
exec('chmod 444 /var/www/hotkeybooks/biblio/*.xml');

我还将“联系人”更改为“人员”staging.sql和staging.tgz。

-- ----------------------------
--  Records of `exp_dd_doc_sections`
-- ----------------------------
BEGIN;
INSERT INTO `exp_dd_doc_sections` VALUES (…….<td>contact_first_name, contact_surname</td>\n         <td>Text Input</td>\n           <td>Would enter author full name, this field would only be used for admin purposes.</td>\n          <td>y</td>\n        </tr>\n     <tr>\n          <td>Author Biblio ID</td>\n         <td>author_biblio_id</td>\n         <td>id</td>\n           <td>Text Input</td>\n           <td>Used for relationship building and reference only</td>\n            <td></td>\n     </tr>\n     <tr>\n          <td>Author First Name</td>\n            <td>author_fname</td>\n         <td>contact_first_name</td>\n           <td>Text Input</td>\n           <td></td>\n         <td></td>\n     </tr>\n     <tr>\n          <td>Author Last Name</td>\n         <td>author_lname</td>\n         <td>contact_surname</td>\n          <td>Text Input</td>\n           <td></td>\n         <td></td>\n     </tr>\n ………)

有谁知道我做了什么打破了系统,我能做些什么来恢复它? 我尝试用原始文件覆盖我的更改,但这没有帮助。

非常感谢任何指导。

1 个答案:

答案 0 :(得分:0)

听起来你需要一些基本的故障排除。

也许您的解析工作正常,但由于文件权限或其他原因,各个位置之间的转移失败。

向后工作:

您能否确认在步骤4中传输的文件是新文件?它是否有预期的修改日期?它是否有预期的数据?

您能否确认步骤3中的文件staging.sql是否为具有预期修改日期的新文件?它是否有预期的数据?

您能确认在步骤2中创建的文件是带有预期日期和数据的新文件吗?

您是否在错误日志中看到任何内容表明脚本中的任何内容都失败了?