Skocz do zawartości

Eksport do xml

Polecane posty

Witam,

 

Plik wynikowy:

<?xml version="1.0" encoding="UTF-8"?>{360C5C6E-A19A-4F23-8879-DC700911F0F8}<LIST>
<RECEIVER_NAME> Jan Kowalski</RECEIVER_NAME>
<RECEIVER_POSTCODE>00-000</RECEIVER_POSTCODE>
<RECEIVER_CITY>Głogów</RECEIVER_CITY>
<RECEIVER_STREET>Osadników 45</RECEIVER_STREET>
<RECEIVER_TEL>0000000</RECEIVER_TEL>
<CATEGORY1>1</CATEGORY1>
<COMMENT>Elektronika</COMMENT>
<GOODS_VALUE>70.8000</GOODS_VALUE>
<CASH_ON_DELIVERY>70.8000</CASH_ON_DELIVERY>
<PRE_REC_EMAIL></PRE_REC_EMAIL>
</LIST>

 

Link to postu
  • 1 miesiąc temu...
  • 1 miesiąc temu...

Witam

Jak powinna wyglądać linie odpowiadające za dopisanie do XML

- Nick (by wstawiał sie w pole zawartość w e Cas)

- Jakiego produktu dotyczy (by wstawiała się nazwa zakupionego towaru w pole OPIS w eCas)

- Wartość zamówienia z kosztem transportu (chodzi o wczytywaniu wartości ubezpieczenia jeśli paczka nie jest za pobraniem)

 

potrzebuję te wartości by importowały sie do eCas

 

Mój kod:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.sello.pl/export">

 

  <xsl:output method="xml" encoding="UTF-8" indent="yes" />

<xsl:template match="s:ExportData/s:Package">

 

  <xsl:element name="LIST">

 

    <xsl:element name="SENDER_ID">12896</xsl:element>

 

    <xsl:element name="PRE_SEN_SMS">509-023-012</xsl:element>

 

    <xsl:element name="PRE_SEN_EMAIL">sklep@elkar-serwis.pl</xsl:element>

<xsl:element name="RECEIVER_ID"></xsl:element>

 

    <xsl:element name="RECEIVER_NAME"><xsl:value-of select="s:DeliveryAddress/s:Company"/> <xsl:text> </xsl:text> <xsl:value-of select="s:DeliveryAddress/s:Name"/></xsl:element>

 

  <xsl:element name="RECEIVER_POSTCODE"><xsl:value-of select="s:DeliveryAddress/s:ZipCode"/></xsl:element>

 

  <xsl:element name="RECEIVER_CITY"><xsl:value-of select="s:DeliveryAddress/s:City"/></xsl:element>

 

  <xsl:element name="RECEIVER_STREET"><xsl:value-of select="s:DeliveryAddress/s:Line1"/><xsl:value-of select="s:DeliveryAddress/s:Line2"/></xsl:element>

 

  <xsl:element name="RECEIVER_TEL"><xsl:value-of select="s:DeliveryAddress/s:PhoneNumber"/></xsl:element>

 

    <xsl:element name="PRODUCT">AH</xsl:element>

 

    <xsl:element name="INVOICE_TO">N</xsl:element>

 

    <xsl:element name="PAYMENT_TYPE">P</xsl:element>

 

    <xsl:element name="CATEGORY4">1</xsl:element>

 

    <xsl:element name="COMMENT">Elektronika</xsl:element>

 

    <xsl:element name="CASH_ON_DELIVERY"><xsl:value-of select="s:Charge"/></xsl:element>

 

  <xsl:element name="PRE_REC_EMAIL"><xsl:value-of select="s:DeliveryAddress/s:Email"/> </xsl:element>

 

    <xsl:element name="RETURN_ON_DELIVERY">N</xsl:element>

 

    <xsl:element name="GOODS_VALUE">0</xsl:element>

 

    <xsl:element name="COSTS_CENTER"></xsl:element>

 

    <xsl:element name="COMMENT">Opis</xsl:element>

 

    <xsl:element name="CUSTOMER_REFERENCE"></xsl:element>

 

    <xsl:element name="CONTENT"></xsl:element>

 

    <xsl:element name="BLP">1</xsl:element>

 

    <xsl:element name="PDI">N</xsl:element>

 

  </xsl:element>

 

</xsl:template>

 

<xsl:template match="s:ExportData/s:Version" />

 

<xsl:template match="s:ExportData/s:Customer" />

 

<xsl:template match="s:ExportData/s:Company" />

 

<xsl:template match="s:ExportData/s:GUID" />

 

 

</xsl:stylesheet>

Link to postu

Polecam wyeksportować sobie jedną paczkę za pomocą domyślnego formatu Sello (xml). Potem otworzyć plik najlepiej za pomocą przeglądarki internetowej - pojawi się ładna struktura tego pliku.

 

W tej strukturze nick klienta zapisany jest w ścieżce: Package/Customer/Nick, zatem jeśli w powyższym kodzie podany jest kod dopasowujący paczki

<xsl:template match="s:ExportData/s:Package">

to wewnątrz elementu xsl:template dla paczki aby otrzymać wartość pola Nick klienta należy napisać (czyli Customer/Nick):

<xsl:value-of select="s:Customer/s:Nick"/> 

Link to postu

Analogicznie. Nazwa towaru jest w poniższym fragmencie xmla domyślnego:

<Items>
<Item IsDisposable="0" ItemID="2046">
  <Symbol>WOBLACK100</Symbol>
  <Name>Black Tiger woda toaletowa 100ml</Name>
  <Quantity>1</Quantity>
  <Price>551.0200</Price>
</Item>
</Items>

 

Z tym, że towar (Item) znajduje się w kolekcji towarów (Items) - w paczce może być więcej niż 1 towar.

Należało by wtedy przejrzeć całą listę towarów i je wypisać (xsl:foreach) lub wziąć po prostu pierwszy z listy (nie sprawdzałem w praktyce)

<xsl:value-of select="s:Items[0]" />

 

Co do pola z wartością paczki, to jest to pole Value, czyli

  <xsl:value-of select="s:Value" />

 

Link to postu
  • 1 miesiąc temu...

Witam,

 

Wraz z nową wersją Sello (1.14) pojawiło się dziwactwo.

Kod:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.sello.pl/export">
  <xsl:output method="xml" encoding="UTF-8" indent="yes" />

<xsl:template match="s:ExportData/s:Package">
  <xsl:element name="LIST">
    <xsl:element name="RECEIVER_NAME"><xsl:value-of select="s:DeliveryAddress/s:Company"/> <xsl:text> </xsl:text> <xsl:value-of select="s:DeliveryAddress/s:Name"/></xsl:element>
    <xsl:element name="RECEIVER_POSTCODE"><xsl:value-of select="s:DeliveryAddress/s:ZipCode"/></xsl:element>
    <xsl:element name="RECEIVER_CITY"><xsl:value-of select="s:DeliveryAddress/s:City"/></xsl:element>
    <xsl:element name="RECEIVER_STREET"><xsl:value-of select="s:DeliveryAddress/s:Line1"/><xsl:value-of select="s:DeliveryAddress/s:Line2"/></xsl:element>
    <xsl:element name="RECEIVER_TEL"><xsl:value-of select="s:DeliveryAddress/s:PhoneNumber"/></xsl:element>
    <xsl:element name="CATEGORY1">1</xsl:element>
    <xsl:element name="COMMENT">Elektronika</xsl:element>
   <xsl:element name="CASH_ON_DELIVERY"><xsl:value-of select="s:Charge"/></xsl:element>
   <xsl:element name="PRE_REC_EMAIL"><xsl:value-of select="s:DeliveryAddress/s:Email"/> </xsl:element>

   </xsl:element> 
</xsl:template>

  <xsl:template match="s:ExportData/s:Customer" />
  <xsl:template match="s:ExportData/s:Company" />
  <xsl:template match="s:ExportData/s:GUID" />

</xsl:stylesheet>

 

Wynik:

<?xml version="1.0" encoding="UTF-8"?>4<LIST>
<RECEIVER_NAME> Jan Kowalski</RECEIVER_NAME>
<RECEIVER_POSTCODE>41-406</RECEIVER_POSTCODE>
<RECEIVER_CITY>Mysłowice</RECEIVER_CITY>
<RECEIVER_STREET>Polna 6/1</RECEIVER_STREET>
<RECEIVER_TEL>500500500</RECEIVER_TEL>
<CATEGORY1>1</CATEGORY1>
<COMMENT>Elektronika</COMMENT>
<CASH_ON_DELIVERY></CASH_ON_DELIVERY>
<PRE_REC_EMAIL>interia@interia.pl</PRE_REC_EMAIL>
</LIST>

 

Pojawia nam się magiczna "4" przed znacznikiem <LIST>, eCas wywala błąd. Dlaczego, skąd nagle ona się wzięła?

 

Pozdrawiam,

 

Link to postu

By nie generowało "4" trzeba dodać

 

<xsl:template match="s:ExportData/s:Version" />

 

czyli:

 

</xsl:template>

 

<xsl:template match="s:ExportData/s:Version" />

 

<xsl:template match="s:ExportData/s:Customer" />

 

<xsl:template match="s:ExportData/s:Company" />

 

<xsl:template match="s:ExportData/s:GUID" />

 

 

</xsl:stylesheet>

Link to postu
  • 1 miesiąc temu...

Spróbuję :)... na podstawie Visual Studio 2012.

 

1. W Sello należy zaznaczyć kilka przykładowych paczek i wybrać opcję eksportu do domyślnego formatu XML.

2. Zapisany na dysku plik XML należy wczytać w Visual Studio (np przeciagając lub poprzez menu FILE > Open File).

3. Po wczytaniu warto zastosować skrót klawiszowy Ctrl+K+F - spowoduje on sformatowanie xmla z jednej do wielu linijek.

4. Powyższe mają na celu tylko podgląd pliku źródłowego. Można zatem zapisać plik Ctrl+S.

 

5. Z menu FILE wybrać opcję New File (Ctrl+N) i utworzyć nowy XSLT File.

6. Będąc na pliku XSLT, wybrać z okna properties (F4) ikonkę [...] obok Input i wskazać plik XML źródłowy, utworzony w punktach 1-4.

7. Podobnie należy kliknąć [...] obok pola Output, wskazując plik wyjściowy transformaty. Jeśli będzie to również XML to należy dać mu takie rozszerzenie, jeśli csv to csv, itd.

8. Po wybraniu polecenia z menu XML > Start XSLT (Without) Debugging po prawej stronie powinno otworzyć się okienko z podglądem tego co transformata wygenerowała na podstawie pliku domyślnego Sello.

 

Domyślnie nowa transformata utworzona przez Visual Studio kopiuje cały kod xml, więc wynik będzie taki jak polik źródłowy.

 

Można tutaj skopiować całą transformatę z Sello i przerabiać wedle uznania.

 

I teraz najlepszy fragment.. o groźnie brzmiącej nazwie zaczerpniętej z angielskiego - debugowanie ;). Pozwala to w pracy krokowej zobaczyć jak przetwarzany jest plik XML, który fragment transformaty aktualnie jest wykonywany, jaki jest aktualny stan wszystkich zmiennych w kodzie transformaty oraz co generuje się w pliku wynikowym.

 

Odpowiada za to opcja Start XSLT Debugging (Alt+F5). Aby jednak cokolwiek zobaczyć trzeba najpierw w kodzie transformaty w interesującym nas miejscu postawić tzw breakpoint - domyślnie F9. Po lewej stronie kodu pojawi się wtedy czerwone kółeczko. Po uruchomieniu debugowania przetwarzanie zatrzyma się w tym miejscu co będzie oznaczone żółtą strzałeczką na lewej belce.

Wykonanie wskazanego kawałka kodu i przejście do następnej linijki można wykonać za pomocą polecenia Step Over (F10). W tym czasie w okienku z plikiem wynikowym widać co dana linijka wygenerowała.

 

 

 

Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...