• 13-09-2018, 10:47:08
    #1
    Merhaba ;

    aşağıdaki şekilde bir xml i parse edip veritabanına kaydetmek istiyorum.
    xml iç içe olduğu için ve attiribute ler olduğu için biraz problem yaşadım.
    yardım ve destek sağlarsanız çok sevinirim.

    burada ;

    Shipment ShipmentNumber="8100002529" InvoiceNumber="0000000000" ShipmentDate="2018-09-12" TruckPlate="HAVA KARGO" ContainerNumber="HAVA KARGO" DispatchDate="0000-00-00"

    bu kısımlarla aşağısında yer alan bu sevkiyata ait ürün detaylarını satır satır kaydetmek istiyorum.

    http://f2r.gen.tr/sevkiyat.xml
  • 13-09-2018, 10:54:33
    #2
    selamlar, çok kolay bi şekilde halledilebilir ben klasik aspciyim oyuzden windows serveriniz varsa bunu hızlıca parse edip size sonucları ister liste şeklinde ister veritabanına kaydedecek şekilde yapacak bir script hazırlayabilirim.

    Eğer kendiniz yapacaksanız: "<ShipmentDetail" ve "/>" arasındaki kümeleri alıp, bunları döngü içerisinde parçalayıp uygun stringe atayabilirsiniz.
  • 13-09-2018, 11:08:12
    #3
    merhaba ;

    classic asp de kısmen bende yaptım. shipment detail i alıyorum fakat sorun şurada hangi detay hangi sevkiyata ait bunu bilmem için iç içe döngü oluşturup bu sevkiyatla bu ürünler gelmiş diyebilmem gerekir.

    aşağıda klasik asp üzerinde yaptığım örnek var. yardımcı olabilirsen sevinirim.

    PostUrl="http://www.f2r.gen.tr/sevkiyat.xml"

    set objXMLDoc = createObject("MSXML2.DOMDocument")
    objXMLDoc.async = False
    objXMLDoc.setProperty "ServerHTTPRequest", true
    objXMLDoc.load(PostUrl)

    Set Root = objXMLDoc.documentElement
    Set NodeList = Root.getElementsByTagName("Shipments")
    set nodes = objXMLDoc.selectNodes("//*")
    for i = 1 to nodes.length -1
    set attributes = nodes.item(i).attributes



    for j = 0 to attributes.length - 1

    response.write( attributes.item(j).nodeName & " - " & attributes.item(j).value & " <br> ")


    ShipmentNumber =attributes.item(j).value
    InvoiceNumber =attributes.item(j).value
    ShipmentDate =attributes.item(j).value
    TruckPlate =attributes.item(j).value
    ContainerNumber =attributes.item(j).value
    DispatchDate =attributes.item(j).value

    BdtCode =attributes.item(j).value
    ProdcutCode =attributes.item(j).value
    Quantity =attributes.item(j).value
    OrderReference =attributes.item(j).value
    BdtOrderNumber =attributes.item(j).value
    CustomerItemReference =attributes.item(j).value
    CustomerItemCode =attributes.item(j).value
    CustomerOrderReference =attributes.item(j).value
    ProductName_Tr =attributes.item(j).value
    ProductSpec_Tr =attributes.item(j).value
    ProductName_En =attributes.item(j).value
    ProductSpec_En =attributes.item(j).value
    tarih =date
    saat =time
    tarihsaat =Now


    Set rsz = Server.CreateObject("ADODB.Recordset")
    sorz = "Select * from tbl_servis_tirlist limit 1"
    rsz.Open sorz,baglan,1,3
    rsz.addnew
    rsz("ShipmentNumber") =Trim(ShipmentNumber)
    rsz("InvoiceNumber") =Trim(InvoiceNumber)
    rsz("ShipmentDate") =Trim(UrunHiyerarsisiTanimi)
    rsz("TruckPlate") =Trim(TruckPlate)
    rsz("ContainerNumber") =Trim(ContainerNumber)
    rsz("DispatchDate") =Trim(DispatchDate)
    rsz("BdtCode") =Trim(BdtCode)
    rsz("ProdcutCode") =Trim(ProdcutCode)
    rsz("Quantity") =Trim(Quantity)
    rsz("OrderReference") =Trim(OrderReference)
    rsz("BdtOrderNumber") =Trim(BdtOrderNumber)
    rsz("CustomerItemReference") =Trim(CustomerItemReference)
    rsz("CustomerItemCode") =Trim(CustomerItemCode)
    rsz("CustomerOrderReference") =Trim(UrunHiyerarsisiTanimi)
    rsz("ProductName_Tr") =Trim(ProductName_Tr)
    rsz("ProductSpec_Tr") =Trim(ProductSpec_Tr)
    rsz("ProductName_En") =Trim(ProductName_En)
    rsz("ProductSpec_En") =Trim(ProductSpec_En)
    rsz("tarih") =tarih
    rsz("saat") =saat
    rsz("tarihsaat") =tarihsaat
    rsz.update

    next

    next
  • 13-09-2018, 11:14:37
    #4
    <Shipment boşluk ile </Shipment> kelimesinden itibaren patlatırsan hocam sorununu çözersin REGEXP kullanmanı sonra xml nodelarına parçalamanı öneririm.
  • 13-09-2018, 11:41:40
    #5
    <?php
    $xml=simplexml_load_file("dosyaYolu.xml") or die("Dosya Hatalı");
    print_r($xml);
    ?>

    Gelen sonucu for ile döngüye sok dönsün dursun kolay gele.
  • 13-09-2018, 12:20:15
    #6
    @neptun söylediğini yaptım ama yandaki properyleri alamadım. bir de iç içe olduğu için iç içe döngü gerekli sanırım.

    @DİZİNİ örnek olarak birşey verebilir misin ?
  • 13-09-2018, 12:35:02
    #7
    ztk
    Kimlik doğrulama veya yönetimden onay bekliyor.
    F2RSolutions adlı üyeden alıntı: mesajı görüntüle
    Merhaba ;

    aşağıdaki şekilde bir xml i parse edip veritabanına kaydetmek istiyorum.
    xml iç içe olduğu için ve attiribute ler olduğu için biraz problem yaşadım.
    yardım ve destek sağlarsanız çok sevinirim.

    burada ;

    Shipment ShipmentNumber="8100002529" InvoiceNumber="0000000000" ShipmentDate="2018-09-12" TruckPlate="HAVA KARGO" ContainerNumber="HAVA KARGO" DispatchDate="0000-00-00"

    bu kısımlarla aşağısında yer alan bu sevkiyata ait ürün detaylarını satır satır kaydetmek istiyorum.

    http://f2r.gen.tr/sevkiyat.xml

    <?php
    $xml = 'XMLin İÇİNİ BURAYA YAPIŞTIRIN';

    $xml = preg_replace("/(</?)(w+):([^>]*>)/", "$1$2$3", $xml);
    $xml = simplexml_load_string($xml);
    $json = json_encode($xml, JSON_PRETTY_PRINT);

    echo "<pre>".$json."</pre>";
    ?>

    sonuç istediğiniz gibi olacak sanırım. tekrar array e çevirip attributeleri de alabilirsiniz.
  • 13-09-2018, 12:57:24
    #8
    $xml = simplexml_load_file("http://www.f2r.gen.tr/sevkiyat.xml");
    $xml = 'XMLin İÇİNİ BURAYA YAPIŞTIRIN';

    $xml = preg_replace("/(</?)(w+)[^>]*>)/", "$1$2$3", $xml);
    $xml = simplexml_load_string($xml);
    $json = json_encode($xml, JSON_PRETTY_PRINT);

    echo "<pre>".$json."</pre>";

    bu şekilde yaptığımda hata veriyor sayfa

    Warning: preg_replace(): Unknown modifier '?' in C:\AppServ\www\xml.php on line 7
    false


    ztk adlı üyeden alıntı: mesajı görüntüle
    <?php
    $xml = 'XMLin İÇİNİ BURAYA YAPIŞTIRIN';

    $xml = preg_replace("/(</?)(w+)[^>]*>)/", "$1$2$3", $xml);
    $xml = simplexml_load_string($xml);
    $json = json_encode($xml, JSON_PRETTY_PRINT);

    echo "<pre>".$json."</pre>";
    ?>

    sonuç istediğiniz gibi olacak sanırım. tekrar array e çevirip attributeleri de alabilirsiniz.
  • 13-09-2018, 13:04:36
    #9
    F2RSolutions adlı üyeden alıntı: mesajı görüntüle
    $xml = simplexml_load_file("http://www.f2r.gen.tr/sevkiyat.xml");
    $xml = 'XMLin İÇİNİ BURAYA YAPIŞTIRIN';

    $xml = preg_replace("/(</?)(w+)[^>]*>)/", "$1$2$3", $xml);
    $xml = simplexml_load_string($xml);
    $json = json_encode($xml, JSON_PRETTY_PRINT);

    echo "<pre>".$json."</pre>";

    bu şekilde yaptığımda hata veriyor sayfa

    Warning: preg_replace(): Unknown modifier '?' in C:AppServwwwxml.php on line 7
    false

    $xml = simplexml_load_file("http://www.f2r.gen.tr/sevkiyat.xml");
    $xml = 'XMLin İÇİNİ BURAYA YAPIŞTIRIN'; =>> bu satırı sildiniz değil mi.