如何从MYSQL数据库导出的XML文件为每条记录创建一个XML文件?

时间:2015-01-14 04:38:47

标签: php mysql xml

每个人都过得愉快。我从MYSQL数据库导出了一组xml中的数据。但是,我想将现有的xml文件分成1个XML文件中的1个ROW。示例如下:

从数据库导出XML结果:

文件名: result01.xml

文件中的脚本:

<ROWDATA>
<ROW>
    <DOCKEY>57911</DOCKEY>
    <DOCNO>MY1113</DOCNO>
    <DOCDATE>20141201</DOCDATE>
</ROW>
<ROW>
    <DOCKEY>57913</DOCKEY>
    <DOCNO>MY1114</DOCNO>
    <DOCDATE>20141201</DOCDATE>

</ROW>
<ROW>
    <DOCKEY>57915</DOCKEY>
    <DOCNO>MY1115</DOCNO>
    <DOCDATE>20141201</DOCDATE>
</ROW>
<ROW>
    <DOCKEY>57915</DOCKEY>
    <DOCNO>MY1115</DOCNO>
    <DOCDATE>20141201</DOCDATE>
</ROW>
<ROW>
    <DOCKEY>57957</DOCKEY>
    <DOCNO>MY1160</DOCNO>
    <DOCDATE>20141201</DOCDATE>
</ROW>
</ROWDATA>

但我需要的是每行创建一个文件:

文件名: 57911.MY1113.xml 文件中的XML:

<ROWDATA>
    <ROW DOCKEY="57911" DOCNO="MY1113" DOCDATE="20141201">
</ROW></ROWDATA>

文件名: 57913.MY1114.xml 文件中的XML:

<ROWDATA>
      <ROW DOCKEY="57913" DOCNO="MY1114" DOCDATE="20141201">
</ROW></ROWDATA>

有没有人知道是否有一种创建多个XML文件的简单方法

正如我所提到的那样。非常感谢您的反馈。

非常感谢。

1 个答案:

答案 0 :(得分:1)

因此使用PHP看起来像这样:

$outDir = 'path/to/output/dir';
$src = 'result01.xml';

// create the document and load our source xml file
$srcDom = new DOMDocument();
$srcDom->load($src);

// pull all the ROW elements with xpath
$rowFinder = new DOMXpath($srcDom);
$rows = $rowFinder->query('//ROW');

// loop over the ROWs
foreach($rows as $row) {

   // create a new document for our export.
   $outDoc = new DOMDocument();
   // create a ROWDATA element for our root node
   $outRoot = $outDoc->createElement('ROWDATA');

   // import the ROW node (and all its descendents into the new document
   $outRow = $outDoc->importNode($row, true);

   $filename = array(
      'DOCKEY' => '',
      'DOCNO' => ''
   );
   foreach ($outRow->childNodes as $datum) {
      // add the values for segements of the filename
      if (array_key_exists($datum->nodeName, $filename)) {
         $filename[$datum->nodeName] = $datum->nodeValue;
      }
   }

   // append the ROW to ROWDATA
   $outRoot->appendChild($outRow);

   // append the ROWDATA to our document
   $outDoc->appendChild($outRoot);

   // save the xml to file using strtr to create the file name from
   // our array of filename segments
   $outDoc->save(strtr($outDir . '/DOCKEY.DOCNO.xml', $filename));
}