每个人都过得愉快。我从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文件的简单方法
正如我所提到的那样。非常感谢您的反馈。非常感谢。
答案 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));
}