这是代码:
$xml = simplexml_load_file($candidateFile);
if (!$xml) {
$this->addCritical("ERROR: " . basename($candidateFile));
return;
}
$ModifiedXml = simplexml_load_string( str_replace( "\n</DESIGNATION_PLU>", '</DESIGNATION_PLU>', $xml ) );
最后一行不起作用,我所要做的就是将使用已加载的XML“ $ xml”替换某些内容,并使用经过修改的XML继续工作。
如果我不清楚,或者您需要更多信息,请告诉我。
更大的代码部分:
$xml = simplexml_load_file($candidateFile);
if (!$xml) {
$this->addCritical("ERROR: " . basename($candidateFile));
return;
}
// Before it will write to the new files I need to fix original XML
$candidateFilenameParts = explode('_', basename($candidateFile));
$candidateFileDatetime = str_replace('.xml', '', $candidateFilenameParts[3]);
$headerFilename = "header_$candidateFileDatetime.csv";
$productFilename = "product_$candidateFileDatetime.csv";
$paymentFilename = "payment_$candidateFileDatetime.csv";
$this->addInfo("");
XML:看起来最初,XML中的值以“ \ n”结尾。
<LIGNE>
<ID_TICKET>123</ID_TICKET>
<CODE_RAYON>123</CODE_RAYON>
<CODE_VENDEUR>123</CODE_VENDEUR>
<PLU>123</PLU>
<DESIGNATION_PLU>New 1234
---> Next line </DESIGNATION_PLU>
<CODE_EAN/>
<TYPE_ARTICLE>Pièce</TYPE_ARTICLE>
<QUANTITE_VENDUE>1</QUANTITE_VENDUE>
<UNITE_MESURE>123</UNITE_MESURE>
<PRIX_UNITAIRE_TTC>123</PRIX_UNITAIRE_TTC>
<MONTANT_VENTE_TTC>123</MONTANT_VENTE_TTC>
<SYMB_MONNAIE/>
<ANNULE>0</ANNULE>
<CODE_TVA>123</CODE_TVA>
<TVA_TAUX>123</TVA_TAUX>
<TYPE_TICKET>123</TYPE_TICKET>
<POURC_REMISE/>
<MONTANT_REMISE/>
</LIGNE>
答案 0 :(得分:1)
如果您有一个文档,例如...
<DOC>
<LIGNE>
<ID_TICKET>123</ID_TICKET>
<CODE_RAYON>123</CODE_RAYON>
<CODE_VENDEUR>123</CODE_VENDEUR>
<PLU>123</PLU>
<DESIGNATION_PLU>New 1234
</DESIGNATION_PLU>
<CODE_EAN />
<TYPE_ARTICLE>Pièce</TYPE_ARTICLE>
<QUANTITE_VENDUE>1</QUANTITE_VENDUE>
<UNITE_MESURE>123</UNITE_MESURE>
<PRIX_UNITAIRE_TTC>123</PRIX_UNITAIRE_TTC>
<MONTANT_VENTE_TTC>123</MONTANT_VENTE_TTC>
<SYMB_MONNAIE />
<ANNULE>0</ANNULE>
<CODE_TVA>123</CODE_TVA>
<TVA_TAUX>123</TVA_TAUX>
<TYPE_TICKET>123</TYPE_TICKET>
<POURC_REMISE />
<MONTANT_REMISE />
</LIGNE>
</DOC>
使用trim()
删除周围的空格会更容易,因为这将迎合具有相同问题的任何其他内容...
$xml = simplexml_load_file($candidateFile);
function trimXML( SimpleXMLElement $element ) {
foreach ( $element->children() as $node ) {
if ( $node->count() > 0 ) {
trimXML($node);
}
else {
$node[0] = trim((string)$node);
}
}
}
trimXML($xml);
echo $xml->LIGNE[0]->DESIGNATION_PLU.".".PHP_EOL;
给予...
New 1234.