PHP XML while döngüsüyle işlem
Merhaba, şöyle bir xml dosyam var <cbc:Name></cbc:Name> while döngüsüne aldım başarıyla tüm bilgileri aldı yalnız bana alttaki TL KDV bölümüde gerekiyor kolon kolon ayırıp aynı tabloda birleştiricem
PHP KODU bu şekilde
function ara($bas, $son, $yazi)
{
@preg_match_all('/' . preg_quote($bas, '/') .
'(.*?)'. preg_quote($son, '/').'/i', $yazi, $m);
return @$m[1];
}
if(isset($_FILES['dosya'])){
$hata = $_FILES['dosya']['error'];
if($hata != 0) {
echo 'Yüklenirken bir hata gerçekleşmiş.';
} else {
$boyut = $_FILES['dosya']['size'];
if($boyut > (1024*1024*3)){
echo 'Dosya 3MB den büyük olamaz.';
} else {
$isim = $_FILES['dosya']['name'];
$uzanti = explode('.', $isim);
$uzanti = $uzanti[count($uzanti)-1];
$dosya = $_FILES['dosya']['tmp_name'];
copy($dosya, 'dosyalar/' . $_FILES['dosya']['name']);
echo '<br>Dosyanız upload edildi!';
$dosya = $dosya;
$icerik = file_get_contents($dosya);
$unvan = ara('<cbc:Name>', '</cbc:Name>', $icerik);
$adres = ara('<cbc:StreetName>', '</cbc:StreetName>', $icerik);
$sirketMahalle = ara('<cbc:CitySubdivisionName>', '</cbc:CitySubdivisionName>', $icerik);
$sirketSehir = ara('<cbc:CityName>', '</cbc:CityName>', $icerik);
$faturaNo = ara('<cbc:ID>', '</cbc:ID>', $icerik);
$vergiDairesi = ara('<cac:TaxScheme><cbc:Name>', '</cbc:Name></cac:TaxScheme>', $icerik);
$vergiNo = ara('<cbc:ID schemeID="VKN">', '</cbc:ID>', $icerik);
$faturaAciklama = ara('<cac:Item>', '</cac:Item>', $icerik);
$urunTutar = ara('<cac:Price>', '</cac:Price>', $icerik);
$toplamTutar = ara('<cbc:PriceAmount currencyID="TRY">', '</cbc:PriceAmount>', $icerik);
//echo str_replace('<', '<', $icerik);
echo
'<br><br><br><b>Şirket Ünvanı:</b> ' . $unvan[0]
.'<br><b>Şirket Adres:</b> ' . $adres[0]
.'<br><b>Şirket Mahalle:</b> ' . $sirketMahalle[0]
.'<br><b>Şirket Şehir:</b> ' . $sirketSehir[0]
.'<br><b>Fatura Numarası: </b>' . $faturaNo[0]
.'<br><b>Vergi Dairesi: </b>' . $vergiDairesi[0]
.'<br><b>Vergi Numarası: </b>' . $vergiNo[0]
.'<br><b>Fatura Açıklaması: </b>' . $faturaAciklama[0]
.'<br><br><b>Fatura Toplam Tutar: </b>' . $toplamTutar[0]. " TL";
foreach ($faturaAciklama as $ftraciklama){
echo "<br>".$ftraciklama."<br>";
}
}
}
}
foreach ($faturaAciklama as $ftraciklama){
echo "<br>".$ftraciklama."<br>";
kdv bölümünü ve sayıları örnek "ürün açıklaması, fiyat, kdv" şeklinde yan yana sıralamak için ne yapabilirim
** Kendimce birşeyler yaptım şuan istediğim gibi herşeyi alabiliyorum yalnız bir sorun daha çıktı oda şöyle xml dosyamda aynı isimde olan kodlar var aşağıya örnek koyuyorum ben mesela sadece
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="TRY">8660.41</cbc:LineExtensionAmount>
cac:LegalMonetaryTotal altındaki cbc:LineExtensionAmount içindeki bilgiyi almak istiyorum buna nasıl erişim sağlayabilirim sadece cbc:LineExtensionAmount bunu yazdığımda tüm xml deki bunla aynı isimdeki şeyleri getiriyor ben bunu istemiyorum **
<html>
<head>
<title>XML WRİTER</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="dosya" />
<input type="submit" value="Gönder" />
</form>
</body>
</html>
<?php
function ara($bas, $son, $yazi)
{
@preg_match_all('/' . preg_quote($bas, '/') .
'(.*?)'. preg_quote($son, '/').'/i', $yazi, $m);
return @$m[1];
}
if(isset($_FILES['dosya'])){
$hata = $_FILES['dosya']['error'];
if($hata != 0) {
echo 'Yüklenirken bir hata gerçekleşmiş.';
} else {
$boyut = $_FILES['dosya']['size'];
if($boyut > (1024*1024*3)){
echo 'Dosya 3MB den büyük olamaz.';
} else {
$isim = $_FILES['dosya']['name'];
$uzanti = explode('.', $isim);
$uzanti = $uzanti[count($uzanti)-1];
$dosya = $_FILES['dosya']['tmp_name'];
copy($dosya, 'dosyalar/' . $_FILES['dosya']['name']);
echo '<br>Dosyanız upload edildi!';
$dosya = $dosya;
$icerik = file_get_contents($dosya);
$tumicerik = ara('Invoice', '</Invoice>', $icerik);
$unvan = ara('<cbc:Name>', '</cbc:Name>', $icerik);
$adres = ara('<cbc:StreetName>', '</cbc:StreetName>', $icerik);
$sirketMahalle = ara('<cbc:CitySubdivisionName>', '</cbc:CitySubdivisionName>', $icerik);
$sirketSehir = ara('<cbc:CityName>', '</cbc:CityName>', $icerik);
$faturaNo = ara('<cbc:ID>', '</cbc:ID>', $icerik);
$vergiDairesi = ara('<cac:TaxScheme><cbc:Name>', '</cbc:Name></cac:TaxScheme>', $icerik);
$vergiNo = ara('<cbc:ID schemeID="VKN">', '</cbc:ID>', $icerik);
$faturaAciklama = ara('<cac:Item>', '</cac:Item>', $icerik);
$urunTutar = ara('<cac:Price>', '</cac:Price>', $icerik);
$urunKilo = ara('<cbc:InvoicedQuantity unitCode="KGM">', '</cbc:InvoicedQuantity>', $icerik);
$toplamTutar = ara('<cbc:PriceAmount currencyID="TRY">', '</cbc:PriceAmount>', $icerik);
//echo str_replace('<', '<', $icerik);
echo
'<br><br><br><b>Şirket Ünvanı:</b> ' . $unvan[0]
.'<br><b>Şirket Adres:</b> ' . $adres[0]
.'<br><b>Şirket Mahalle:</b> ' . $sirketMahalle[0]
.'<br><b>Şirket Şehir:</b> ' . $sirketSehir[0]
.'<br><b>Fatura Numarası: </b>' . $faturaNo[0]
.'<br><b>Vergi Dairesi: </b>' . $vergiDairesi[0]
.'<br><b>Vergi Numarası: </b>' . $vergiNo[0]
.'<br><b>Fatura Toplam Tutar: </b>' . $toplamTutar[0]. " TL<br><br>";
$satir=count($faturaAciklama);
foreach ($tumicerik as $tumIcerikListele){
for($i=0;$i<=$satir-1;$i++){
echo "<b>".$i.". Ürün: </b>"."<br><b>Açıklama: </b>".$tumIcerikListele[0].$faturaAciklama[$i].
"<br><b>Kilo: </b>".$tumIcerikListele[0].$urunKilo[$i].
"<br><b>Tutar: </b> ".$tumIcerikListele[0].$urunTutar[$i]."<br>";
}
}
}
}
}
?>