1

我试图弄清楚我可以做些什么来创建一个在我的 XML 文件中附加数据而不是连续重写 XML 文件的代码。

我需要能够保存所有表单条目,并且现在每次提交表单时。它会创建一个新的 XML 文件并删除旧的文件。

这可能真的很容易解决,或者我真的很笨,但是我查看了 DOM 语法,没有看到我可以改变什么来改变结果。

// define configuration file name and path
$configFile = 'abook.xml';

// if form not yet submitted
// display form
if (!isset($_POST['submit'])) {

  // set up array with default parameters
  $data = array();
  $data['name'] = null;
  $data['email'] = null;
  $data['caddress'] = null;
  $data['city'] = null;
  $data['state'] = null;
  $data['zipcode'] = null;
  $data['phone'] = null;
  $data['pug'] = null;
  $data['comment'] = null;
  $data['subscribe'] = null;

  // read current configuration values
  // use them to pre-fill the form
  if (file_exists($configFile)) {
    $doc = new DOMDocument();
    $doc->preserveWhiteSpace = false;
    $doc->load($configFile);
    $address = $doc->getElementsByTagName('address');
    foreach ($address->item(0)->childNodes as $node) {
      $data[$node->nodeName] = $node->nodeValue; 

    }        
  }

中间是 PHP 表单和验证代码,最后我再次使用 XML 标记:

  // generate new XML document
  $doc = new DOMDocument();

  // create and attach root element <configuration> 
  $root = $doc->createElement('addressbook');
  $configuration = $doc->appendChild($root);

  // create and attach <oven> element under <configuration>
  $address = $doc->createElement('address');
  $configuration->appendChild($address);

  // write each configuration value to the file
  foreach ($config as $key => $value) {
    if (trim($value) != '') {
      $elem = $doc->createElement($key);
      $text = $doc->createTextNode($value);
      $address->appendChild($elem);
      $elem->appendChild($text);          
    }
  }

  // format XML output



  // save XML file
  $doc->formatOutput = true;
  $doc->save($configFile) or die('ERROR: Cannot write configuration file');      
  echo 'Thank you for filling out an application.';
}  

我对此真的很陌生,所以如果我的代码很混乱,我很抱歉。

第二部分我正在处理一个已链接到我的 XML 文件的 XSL 文件,但无论我使用什么语法进行转换,都无法将其保存在表中。

同样,我不知道这是否是由我设置 PHP 以编写 XML 的方式引起的。

4

0 回答 0