XML File splitting in PI

Hi all,
We have a requirement that the receiving application can accept files only of size 2MB. So this is a limitation from the receiving application
The source system is SAP ECC system and the receiving application is a legacy application.
Technically it is a ABAP Proxy to File scenario. Receiving application can accept files only in XML format.
SAP ABAP Proxy code is written in such a way to read all the records in a SAP table and the full table load is sent as an proxy xml message to PI, PI has to split this  full xml file  in to chunks based on some condition and then transfer it to receiving legacy application.
Can we achieve file splitting in PI for XML files based on no.of records or size.
Please share your inputs/pointers to provide the best solution to this requirement.
regards,
Younus

Hi,
Yes this can be done by the amount of records you send through at a time.
So lets there is 10000 records. You might only send 200 at a time and that will keep it under the 2mb limitation.
This is a simple if function on your nodes. Please see the links below that would help you.
Split source message into multiple target messages
Defining Message Splits - SAP NetWeaver Process Integration - SAP Library
Configuring Mapping-Based Message Splits - Integration Directory - SAP Library
Split mapping created no messages SAP PI 7.11
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/30ea2fdf-f047-2a10-d3a2-955a634bde6b?overridelayout=t…
Regards,
Jannus Botha

Similar Messages

  • XI have to break/split XML-File into N times a XML Message

    Hello,
    Can anyone help with this one. I guess this is not an easy exercise but I need to solve it urgently.
    XI gets a XML-file from a system.
    This file has N times a element <XBT>.
    Every time XI gets such a file the number of <XBT> is different.
    XI haves to break this xml into N xml messages according to element ><XBT> in order to send them to Sap sequentially.
    For example the following XML file have to split up into 2 xml files (the elements XBT occurs 2 times)
    How can this be done?
    <mt_BubaBestand>
    <b><XBT></b>
      <Algemeen>
         <Verkooporganisatie>5000</Verkooporganisatie>
         <Distributiekanaal>50</Distributiekanaal>
         <Productgroep>50</Productgroep>
         <Ordernummer>123123</Ordernummer>
         <Verkoopgroep/>
         <Documentdatum>20061207</Documentdatum>
         <Medewerker_nr>e60217</Medewerker_nr>
         <Medewerker_naam>Hermans</Medewerker_naam>
         <CRM_nr/>
         <CIFDedicated/>
         <Klantgroep/>
      </Algemeen>
    <b></XBT></b>
    <b><XBT></b>
      <Algemeen>
         <Verkooporganisatie>5000</Verkooporganisatie>
         <Distributiekanaal>50</Distributiekanaal>
         <Productgroep>50</Productgroep>
         <Ordernummer>123123</Ordernummer>
         <Verkoopgroep/>
         <Documentdatum>20061207</Documentdatum>
         <Medewerker_nr>e60217</Medewerker_nr>
         <Medewerker_naam>Hermans</Medewerker_naam>
         <CRM_nr/>
         <CIFDedicated/>
         <Klantgroep/>
      </Algemeen>
    <b></XBT></b>
    </mt_BubaBestand>

    This is pretty standard procedure if you are posting these messages to R/3.  As was pointed out in the weblogs above, when using IDocs you don't need to do any tricky configuration.  Just make sure that your XML structure is set correctly (ie:  1 to unbounded, etc) to the limits that you want, and XI will automatically loop the mapping process for each instance of the <XBT> item that it detects in the source message.  You mentioned:
    <i>For example the following XML file have to split up into 2 xml files (the elements XBT occurs 2 times)</i>
    Well, you don't actually split it into two XML files per say, XI just processes the source message straight to multiple IDocs using the IDoc adapter.

  • Split an XML File and invoke a Web Serivce for each splits using an  XSLT

    Hi,
    We Have a requirement to Split an incoming XML File into chunks based on a child element and hit the target Web Service for each and every split ( i.e no of splits = no of hits on WebService).
    Currently, the incoming XML file is getting splitted and gets appended to the SAME Payload and the WebService is hitted only once with the entire Payload.
    Is it possible to invoke a WebService within a XSLT ?
    Please find below the XSLT code used to split the file in chunks of 3
    <xsl:param name="pItemsNumber" select="3"/>
    <xsl:template match="@*|node()">
    <xsl:choose>
    <xsl:when test="count(Batch/Item) > 4">
    <ItemMaintenance>
    <xsl:for-each-group select="Batch/Item"
    group-adjacent="(position()-1) idiv $pItemsNumber">
    <xsl:result-document href="ItemsMatch\{current-grouping-key()}.xml">
    <ItemMaintenance>
    <xsl:copy-of select="current-group()"/>
    </ItemMaintenance>
    </xsl:result-document>
    </xsl:for-each-group>
    </ItemMaintenance>
    </xsl:when>
    <xsl:otherwise>
    <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
    </xsl:otherwise>
    </xsl:choose>
    </xsl:template>

    Hello,
    It is possible to invoke a webservice from XSLT. To achieve this you must create a custom XSLT function that does the actual webservice call. You need to write an implementation in Java for this. See my blogpost http://blog.melvinvdkuijl.nl/2010/02/custom-xslt-functions-in-oracle-soa-suite-11g/ for a simple example.
    Regards,
    Melvin

  • SAP PI 7.1. Splitting XMl file after 998 rows.

    I need to split the XML file for FI interface after 998 rows. How I can use File content conversion with XML file at sender adapter?
    Please suggest me a solution.

    Hi Nirman,
    If it is an XML file then you need to handle that in mapping. Below is the sample code.
    int count  = 0;
    int count1  = 0;
    for(int j = 0; j< a.length; j++)
         count  = count + 1;
         count1 = count1+ 1;
         result.addValue(a[j]);
         if (count == 998)
    //     if (count == var998)
              if (a.length - count1==0)
                        count = 0;
              else
                        result.addContextChange();
                        count = 0;

  • Splitting multiple IDoc XML files into single IDoc messages for R/3

    Hi all. I have a problem splitting IDoc XML files coming in to XI. I currently have an interface that takes in single store sale IDoc transactions (type WPUBON01) in an IDoc XML file. I then have some complex graphical mapping on the IDoc before sending to R/3 via the IDoc adapter. This works fine. However, we now wish to include multiple sales in one file i.e. many WPUBON01 IDocs. I could use message splitting to do this BUT the mapping is so complex, I do not wish to have to change it to enable the processing of many IDocs in one file instead of just one.
    What I want to do: have one mapping splitting a multiple IDoc XML file into single IDoc messages and then another taking these single messages as before and performing the mapping. I cannot find a way to do this in one interface; the main problem I'm having is getting XI to split the multiple IDocs into many single IDoc messages within XI itself. I'd be very grateful for any advice on the best way to do this.
    Thankyou.
    Stuart Richards (Halfords, UK)

    Bhavesh,
    Thanks again for a clear explanation... I'm moving forwards but still struggling. I've been on this all afternoon today (after a break on other things) and just cannot get my message to split properly (though the SOAP adapter problem I had earlier is now fixed!). If my initial IDoc XML file contains this format:
    <WPUBON01><IDOC>....</IDOC>
                          <IDOC>....</IDOC>
                          <IDOC>....</IDOC></WPUBON01>
    .. I'm not sure what the cardinaility on the first message mapping and interface mapping should be. I'd have thought the source interface would be 1 and the target would be 0..unbounded but this isn't working. I'm trying different things but I get different errors each time. Currently, I have the above cardinality in my first interface and I'm passing in the following data:
    <WPUBON01><IDOC><EDI_DC40><TABNAM>EDI_DC40</TABNAM><MANDT /><DOCNUM /><DOCREL>620</DOCREL><DIRECT>2</DIRECT><IDOCTYP>WPUBON01</IDOCTYP><MESTYP>WPUBON</MESTYP><MESCOD>ST6</MESCOD><SNDPOR>WPUX</SNDPOR><SNDPRT>KU</SNDPRT><SNDPRN>0518</SNDPRN><RCVPOR /><RCVPRT>KU</RCVPRT><RCVPRN>0518</RCVPRN><REFINT>00000003832292</REFINT></EDI_DC40><E1WPB01 SEGMENT="1"><POSKREIS>0518</POSKREIS><KASSID>29</KASSID><VORGDATUM>20071029</VORGDATUM><VORGZEIT>160633</VORGZEIT><BONNUMMER>1001</BONNUMMER><KASSIERER>100</KASSIERER><CSHNAME> </CSHNAME><BELEGWAERS>GBP</BELEGWAERS><E1WPB02 SEGMENT="2"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="3"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="4"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="5"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="6"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="7"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="8"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="9"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="10"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="11"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="12"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="13"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="14"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="15"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="16"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB06 SEGMENT="17"><VORZEICHEN></VORZEICHEN><ZAHLART>PTCS</ZAHLART><SUMME> </SUMME><KARTENNR /><ZUONR>1001</ZUONR></E1WPB06></E1WPB01></IDOC><IDOC><EDI_DC40><TABNAM>EDI_DC40</TABNAM><MANDT /><DOCNUM /><DOCREL>620</DOCREL><DIRECT>2</DIRECT><IDOCTYP>WPUBON01</IDOCTYP><MESTYP>WPUBON</MESTYP><MESCOD>ST6</MESCOD><SNDPOR>WPUX</SNDPOR><SNDPRT>KU</SNDPRT><SNDPRN>0518</SNDPRN><RCVPOR /><RCVPRT>KU</RCVPRT><RCVPRN>0518</RCVPRN><REFINT>00000003832293</REFINT></EDI_DC40><E1WPB01 SEGMENT="1"><POSKREIS>0518</POSKREIS><KASSID>29</KASSID><VORGDATUM>20071029</VORGDATUM><VORGZEIT>160634</VORGZEIT><BONNUMMER>1002</BONNUMMER><KASSIERER>100</KASSIERER><CSHNAME> </CSHNAME><BELEGWAERS>GBP</BELEGWAERS><E1WPB02 SEGMENT="2"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="3"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="4"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="5"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="6"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="7"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="8"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="9"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="10"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="11"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="12"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="13"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="14"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="15"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="16"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB06 SEGMENT="17"><VORZEICHEN></VORZEICHEN><ZAHLART>PTCS</ZAHLART><SUMME> </SUMME><KARTENNR /><ZUONR>1002</ZUONR></E1WPB06></E1WPB01></IDOC><IDOC><EDI_DC40><TABNAM>EDI_DC40</TABNAM><MANDT /><DOCNUM /><DOCREL>620</DOCREL><DIRECT>2</DIRECT><IDOCTYP>WPUBON01</IDOCTYP><MESTYP>WPUBON</MESTYP><MESCOD>ST6</MESCOD><SNDPOR>WPUX</SNDPOR><SNDPRT>KU</SNDPRT><SNDPRN>0518</SNDPRN><RCVPOR /><RCVPRT>KU</RCVPRT><RCVPRN>0518</RCVPRN><REFINT>00000003832294</REFINT></EDI_DC40><E1WPB01 SEGMENT="1"><POSKREIS>0518</POSKREIS><KASSID>29</KASSID><VORGDATUM>20071029</VORGDATUM><VORGZEIT>160634</VORGZEIT><BONNUMMER>1003</BONNUMMER><KASSIERER>100</KASSIERER><CSHNAME> </CSHNAME><BELEGWAERS>GBP</BELEGWAERS><E1WPB02 SEGMENT="2"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="3"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="4"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="5"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="6"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="7"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="8"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="9"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="10"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="11"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="12"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="13"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB02 SEGMENT="14"><VORGANGART /><QUALARTNR>ARTN</QUALARTNR><ARTNR>000000065601301390</ARTNR><VORZEICHEN>-</VORZEICHEN><MENGE>1</MENGE><AKTIONSNR>0000000000</AKTIONSNR><REFBONNR> </REFBONNR><E1WPB03 SEGMENT="15"><VORZEICHEN /><KONDITION>PN10</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03><E1WPB03 SEGMENT="16"><VORZEICHEN></VORZEICHEN><KONDITION>ZPN1</KONDITION><KONDVALUE>1.00</KONDVALUE><CONDID /><QUALCONDID /></E1WPB03></E1WPB02><E1WPB06 SEGMENT="17"><VORZEICHEN></VORZEICHEN><ZAHLART>PTCS</ZAHLART><SUMME> </SUMME><KARTENNR /><ZUONR>1003</ZUONR></E1WPB06></E1WPB01></IDOC></WPUBON01>
    In the message monitor, I get a chequered flag. Great. However, I get the dreaded error 500 in the SOAP receiver comm channel:
    SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal Server Error
    Exception caught by adapter framework: SOAP Error
    Delivery of the message to the application using connection AFW failed, due to: SOAP Error.
    Any ideas as to what this might be?! I'm getting there.... if I get a solution out of this, I promise to write the blog myself!
    Cheers
    Stuart

  • C# Split xml file into multiple files

    Below i have an xml file, in this file, i need to split this xml file into multiple xml files based on date column value,
    suppose i have 10 records with 3 different dates then all unique date records should go into each file . for ex here i have a file with three dates my output should get 3 files while each file containing all records of unique date data. I didn't get any idea
    to proceed on this, thats the reason am not posting any code.Needed urgently please
    <XML>
    <rootNode>
    <childnode>
    <date>2012-12-01</date>
    <name>SSS</name>
    </childnode>
    <childnode>
    <date>2012-12-01</date>
    <name>SSS</name>
    </childnode>
    <childnode>
    <date>2012-12-02</date>
    <name>SSS</name>
    </childnode>
    <childnode>
    <date>2012-12-03</date>
    <name>SSS</name>
    </childnode>
    </rootNode>
    </XML>

    Here is full code:
    using System.Xml.Linq;
    class curEntity
    public DateTime Date;
    public string Name;
    public curEntity(DateTime _Date, string _Name)
    Date = _Date;
    Name = _Name;
    static void Main(string[] args)
    XElement xmlTree = new XElement("XML",
    new XElement("rootNode",
    new XElement("childnode",
    new XElement("date"),
    new XElement("name")
    string InfilePath = @"C:\temp\1.xml";
    string OutFilePath = @"C:\temp\1_";
    XDocument xmlDoc = XDocument.Load(InfilePath);
    List<curEntity> lst = xmlDoc.Element("XML").Element("rootNode").Elements("childnode")
    .Select(element => new curEntity(Convert.ToDateTime(element.Element("date").Value), element.Element("name").Value))
    .ToList();
    var unique = lst.GroupBy(i => i.Date).Select(i => i.Key);
    foreach (DateTime dt in unique)
    List<curEntity> CurEntities = lst.FindAll(x => x.Date == dt);
    XElement outXML = new XElement("XML",
    new XElement("rootNode")
    foreach(curEntity ce in CurEntities)
    outXML.Element("rootNode").Add(new XElement("childnode",
    new XElement("date", ce.Date.ToString("yyyy-MM-dd")),
    new XElement("name", ce.Name)
    outXML.Save(OutFilePath + dt.ToString("yyyy-MM-dd") + ".xml");
    Console.WriteLine("Done");
    Console.ReadKey();

  • Split XML files with XSL result document

    Hi All,
    I have below xml file...
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <T0020
    xsi:schemaLocation="http://www.safersys.org/namespaces/T0020V1 T0020V1.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.safersys.org/namespaces/T0020V1">
    <INTERFACE>
    <NAME>SAFER</NAME>
    <VERSION>04.02</VERSION>
    </INTERFACE>
    <TRANSACTION>
    <VERSION>01.00</VERSION>
    <OPERATION>REPLACE</OPERATION>
    <DATE_TIME>2009-09-01T00:00:00</DATE_TIME>
    <TZ>CT</TZ>
    </TRANSACTION>
    <IRP_ACCOUNT>
    <IRP_CARRIER_ID_NUMBER>274845</IRP_CARRIER_ID_NUMBER>
    <IRP_BASE_COUNTRY>US</IRP_BASE_COUNTRY>
    <IRP_BASE_STATE>AR</IRP_BASE_STATE>
    <IRP_ACCOUNT_NUMBER>55002</IRP_ACCOUNT_NUMBER>
    <IRP_ACCOUNT_TYPE>I</IRP_ACCOUNT_TYPE>
    <IRP_STATUS_CODE>100</IRP_STATUS_CODE>
    <IRP_STATUS_DATE>2007-11-06</IRP_STATUS_DATE>
    <IRP_UPDATE_DATE>2009-08-03</IRP_UPDATE_DATE>
    <IRP_NAME>
    <NAME_TYPE>LG</NAME_TYPE>
    <NAME>A P SUPPLY CO</NAME>
    <IRP_ADDRESS>
    <ADDRESS_TYPE>PH</ADDRESS_TYPE>
    <STREET_LINE_1>1400 N OATS</STREET_LINE_1>
    <STREET_LINE_2/>
    <CITY>TEXARKANA</CITY>
    <STATE>AR</STATE>
    <ZIP_CODE>71854</ZIP_CODE>
    <COUNTY>MILLER</COUNTY>
    <COLONIA/>
    <COUNTRY>US</COUNTRY>
    </IRP_ADDRESS>
    <IRP_ADDRESS>
    <ADDRESS_TYPE>MA</ADDRESS_TYPE>
    <STREET_LINE_1>P O BOX 1927</STREET_LINE_1>
    <STREET_LINE_2/>
    <CITY>TEXARKANA</CITY>
    <STATE>AR</STATE>
    <ZIP_CODE>75504</ZIP_CODE>
    <COUNTY/>
    <COLONIA/>
    <COUNTRY>US</COUNTRY>
    </IRP_ADDRESS>
    </IRP_NAME>
    </IRP_ACCOUNT>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    </T0020>
    and i want to take this xml file and split it into multiple files through java code like this ...
    File1.xml
    <T0020>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    </T0020>
    File2.xml
    <T0020>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    </T0020>
    so i have applied following xslt ...
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:t="http://www.safersys.org/namespaces/T0020V1" version="2.0">
    <xsl:output method="xml" indent="yes" name="xml" />
    <xsl:variable name="accounts" select="t:T0020/t:IRP_ACCOUNT" />
    <xsl:variable name="size" select="10" />
    <xsl:template match="/">
    <xsl:for-each select="$accounts[position() mod $size = 1]">
    <xsl:variable name="filename" select="resolve-uri(concat('output/',position(),'.xml'))" />
    <xsl:result-document href="{$filename}" format="xml">
    <T0020>
    <xsl:for-each select=". | following-sibling::t:IRP_ACCOUNT[position() < $size]">
    <xsl:copy-of select="." />
    </xsl:for-each>
    </T0020>
    </xsl:result-document>
    </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>
    Now i want to apply this XSL to xml through Java Code...
    TransformerFactory tFactory = TransformerFactory.newInstance();
    Source xslSource = new StreamSource(xslFilePath);
    Transformer trans = tFactory.newTransformer(xslSource);
    trans.transform(new StreamSource(xmlFileName), new StreamResult( ????));
    here how can i map new StreamResult( ) input parameter with xsl Result document argument ??
    Please help me.....
    Or Can you give me a link of Example which use result document and Java transform method to Output multiple doucment ??
    Here new StreamResult take only 1 file as to be transformed ....

    hi Tejas ,
    I have done as you said but now able to generate multiple xml file .
    I am giving you the xsl file i have used ....
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:t="http://www.safersys.org/namespaces/T0020V1" version="2.0">
         <xsl:output method="xml" indent="yes" name="xml" />
         <xsl:variable name="accounts" select="t:T0020/t:IRP_ACCOUNT" />
         <xsl:variable name="size" select="5" />
         <xsl:template match="/">
              <xsl:for-each select="$accounts[position() mod $size = 1]">
                   <xsl:variable name="filename" select="concat(position(),'.xml')" />
                        <xsl:result-document href="{$filename}" format="xml">
                             <T0020>
                                  <xsl:for-each select=". | following-sibling::t:IRP_ACCOUNT[position() < $size]">
                                       <xsl:copy-of select="." />
                                  </xsl:for-each>                              
                             </T0020>
                        </xsl:result-document>                    
              </xsl:for-each>
         </xsl:template>
    </xsl:stylesheet>
    and i have done transformation like this ...
    Transformer trans = tFactory.newTransformer(xslSource);
    trans.transform(new StreamSource(xmlFileName), new DOMResult());
    but not getting any result .
    Can you please help me out ?
    - Nisarg

  • Split XML in Multiple XML files with Java Code

    Hi guys , i have following xml file as input ....
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <T0020
    xsi:schemaLocation="http://www.safersys.org/namespaces/T0020V1 T0020V1.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.safersys.org/namespaces/T0020V1">
    <INTERFACE>
    <NAME>SAFER</NAME>
    <VERSION>04.02</VERSION>
    </INTERFACE>
    <TRANSACTION>
    <VERSION>01.00</VERSION>
    <OPERATION>REPLACE</OPERATION>
    <DATE_TIME>2009-09-01T00:00:00</DATE_TIME>
    <TZ>CT</TZ>
    </TRANSACTION>
    <IRP_ACCOUNT>
    <IRP_CARRIER_ID_NUMBER>274845</IRP_CARRIER_ID_NUMBER>
    <IRP_BASE_COUNTRY>US</IRP_BASE_COUNTRY>
    <IRP_BASE_STATE>AR</IRP_BASE_STATE>
    <IRP_ACCOUNT_NUMBER>55002</IRP_ACCOUNT_NUMBER>
    <IRP_ACCOUNT_TYPE>I</IRP_ACCOUNT_TYPE>
    <IRP_STATUS_CODE>100</IRP_STATUS_CODE>
    <IRP_STATUS_DATE>2007-11-06</IRP_STATUS_DATE>
    <IRP_UPDATE_DATE>2009-08-03</IRP_UPDATE_DATE>
    <IRP_NAME>
    <NAME_TYPE>LG</NAME_TYPE>
    <NAME>A P SUPPLY CO</NAME>
    <IRP_ADDRESS>
    <ADDRESS_TYPE>PH</ADDRESS_TYPE>
    <STREET_LINE_1>1400 N OATS</STREET_LINE_1>
    <STREET_LINE_2/>
    <CITY>TEXARKANA</CITY>
    <STATE>AR</STATE>
    <ZIP_CODE>71854</ZIP_CODE>
    <COUNTY>MILLER</COUNTY>
    <COLONIA/>
    <COUNTRY>US</COUNTRY>
    </IRP_ADDRESS>
    <IRP_ADDRESS>
    <ADDRESS_TYPE>MA</ADDRESS_TYPE>
    <STREET_LINE_1>P O BOX 1927</STREET_LINE_1>
    <STREET_LINE_2/>
    <CITY>TEXARKANA</CITY>
    <STATE>AR</STATE>
    <ZIP_CODE>75504</ZIP_CODE>
    <COUNTY/>
    <COLONIA/>
    <COUNTRY>US</COUNTRY>
    </IRP_ADDRESS>
    </IRP_NAME>
    </IRP_ACCOUNT>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    </T0020>
    and i want to take this xml file and split it into multiple files through java code like this ...
    File1.xml
    <T0020>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    </T0020>
    File2.xml
    <T0020>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    <IRP_ACCOUNT> ..... </IRP_ACCOUNT>
    </T0020>
    like wise...
    Each xml file contain maximum 10 or 15 IRP_ACCOUNT.
    Can somebody please help me ? How can i do it with stax like start element and all ?
    thanks in advance.

    Ah, sorry, strike that. You want multiple files. I think the easiest way is to simply parse with DOM. [http://www.w3schools.com/xpath/default.asp] . And here [http://www.w3schools.com/xpath/default.asp].
    You can output the various XML elements using a PrintWriter or creating a separate DOM document for each file you want to create and serializing that.
    - Saish

  • Split XML File

    I have a large xml file which i would like to split based on name of element and number of elements, so if i have 100000 <ELEMENT_A></ELEMENT_A> (as well as other elements) in file i want to generate 10 new files with 10000 elements each (only the ELEMENT_A elements).
    Wats the easiest and quickest way to do this, code would be welcomed

    The answer depends too much on the situation; for example:
    - are those numbers 100000 and 10000 fixed and known in advance?
    - are all elements first-level children of the document root? Or can they be scattered at various nesting level?
    - do you have enough memory to hold the whole DOM structure for the input document? (1)
    - along hich criteria do you group elements per output file: the first 10000 in input file order, then the next 10000, and so on (2)? Or, you have to sort them along another criteria?
    etc, etc.
    (1) If you have enough memory to hold all such input docs into memory, then the simplest approach would be to load the inut doc as a DOM tree, and iterate over the target elements. This way all subsequent logic (sorting, criteria,...) can be implemented in simple Java methods.
    (2)
    I can program in Java not done much with XML. All i want is solution that works well. ThanksToo bad - for fixed number splitting based on element position in the input doc, XSL would be a better match (using predicates on the elements' position()).
    Doing that in plain java (except if you use Java to run an XSLT over the input XML of course) involves more lines of code, but a better maintenability in the long run if more complex logic has to be taken into account.

  • Splitting of a CSV File with Multiple Records into Multiple XML File

    Dear All,
    <b> I am doing a Scenario of CSV to XML Files. I am using BPM for the same. My incoming CSV File has got multiple records. I want to break this Multiple records into Multiple XML Files having one record each.</b>
    Can someone suggest how can I break this rather Split this into Multiple XML Files.
    Is Multimapping absoltely necesaary for this. Can't we do this without Multimapping. Can we have some workaround in the FCC parameters that we use in the Integration Directory.
    Kindly reply ASAP. Thanks a lot to all in anticipation.
    Pls Help.
    Best Regards
    Chakra and Somnath

    Dear All,
    I am trying to do the Multimapping, and have 0....unbounded also. Someways it is not working.
    <b>
    Smitha please tell me one thing...Assigning the Recordsets per Message to 1, does it mean that it will write multiple XML Files as I want.</b>
    Also I am usinf Set to Read only. So once the File is read it becomes RA from A. Then will it write the other Records.
    I have to use a BPM because there are certain dependencies that are there for the entire Process Flow. I cannot do without a BPM.
    Awaiting a reply. Thanks a lot in anticipation.
    Best Regards
    Chakra and Somnath

  • Large XML files, how to split and read them in PI

    Hi,
    For a specific requirement, we have a 60 MB-90 MB XML file being generated by a legacy application.
    This file has to be processed by PI 7.31 Sender File Adapter and should be posted as a ABAP proxy to SAP ECC system.
    To address any performance issues, we are planning to read the files in chunks.
    Is there a way by which we can configure the file adapter to pick a fixed no.of records to limit the size.
    In inputs in this regard will be appreciated.
    regards,
    Younus

    Hi Younus,
    First of all if you are using PI 7.31, then you should be quite able to process XML file of about 100MB scale. Performance issue shall occur in ECC side instead as it can not handle such high volume.
    My suggestion will be to pick the whole XML file at one go and do necessary mapping. However on receiver side use SOAP Adapter instead of XI for making proxy calls to ECC.
    In SOAP adapter (using HTTP as Transport and XI 3.0 as Message protocol) there's an option as 'XI Packaging' which can be used to send data in packets.
    Refer below help doc on it.
    Configuring the Receiver SOAP Adapter - Advanced Adapter Engine - SAP Library
    Thanks
    Bibek

  • Reading XMl file from ABAP

    Hi friends,
    I am working in SAP 4.6c. Please help me in the following scenario.
    I have to read the xml whixjh in the application server.
    I have to Make sure each XML only contains 1 IDOC.  If 10 idocs are pushed out , there should be 10 XML messages.  1 idoc per XML.
    So if the FM receives a message that contains 10 idocs, the routine just needs to split the XML into 10 separate XML's using YYYYMMDDHHMMSS_IDOCNUMBER.XML as the new of each XML.
    Convert the XML into UTF-8 compliant
    above is my requirement.
    Can you guide me how to read a XMl file and findout how many idocs are present in that...
    Please guide me...
    Thanks in advance,
    Sudha

    Hi Sudha,
    Refer this blog and thread to get more information on how to process XML documents.
    /people/thomas.jung3/blog/2004/06/24/bsp-150-a-developer146s-journal-part-v-xml-for-rfcs
    redaing an XML file to an internal table
    Regards,
    Uma
    Message was edited by: Uma Maheswari

  • 2 or more Sales Quotatons in one XML file

    Hi,
    i wanted to know if i can tranfer 2 or more sales quotations to SB1 using only one XML file or do i have to split so that every sales quotation will have a seperate XML file?
    Thanks, udi

    The person just opened some additional window using Window > New window. Perhaps to have different Views of the file and not having to scroll all the time.
    You can easily fix it by just closing the windows. It does no harm to the file. When you save with only one window open, next time you open will also be one window.

  • Using servlet to generate XML file

    What I want to do is simple but can't work. Hope you guys can give me a hint.
    I succesfully generate XML file in command line using Oracle XML parser and class generator. Then I was trying to do it using servlet. it compiles fine but generate NullPointer exception at the line:
    Emp e1= new Emp(); //Emp is the root of XML
    I suspect the Emp constructor can't correctly find the globalDTD in its superclass -CGDocument. Please note this only happens in servlet setting, not is command line setting. Any suggestion to get arounf this?
    Another unrelated question is that when I create a XML file using the Oracle XML parser, it seems all the elements a file has to be added once, otherwise the compiler will compalain about the missing element. this will be inconvinient when I constructing a big XML file, which I 'd liek to split into small piece and add them up. Maybe there is a good way but I just don't know it.
    my email: [email protected]

    Hi,
    I'm running into the same problem deploying the classes generated by the class generator. Code works fine from JDeveloper, but had to put my DTD in the directory where my classes are. Deploying the classes with Apache's JServ gives me a NullPointer exception on the first addNode method. I guess it can't find the DTD. I tried to put the DTD in many locations but this didn't fix the problem. Any suggestions?
    Steve,
    Did you fix this problem? Thanx!
    null

  • Is there a way to export all of the playlists to an XML file?

    I have a ton of playlists in iTunes.  I love making them.  However, I have two computers.  A PC and a Macbook.  I've currently had to export every single playlist to an XML file and then import them on the other machine to keep them in sync.  Is there a way to just save all of the freakin playlists to an XML, or any other way for that matter so I don't have to go through this tedious process?
    I would use iTunes Match to keep it all in sync, but unfortunately the service has been a disappointment for me.  Certain songs won't upload to the cloud, playlists won't sync at all, and songs frequently skip or won't play at all when streaming to my iPhone on the go.  It's a shame because it could be a great service if it worked well.
    Speck

    The paths won't agree on the two OSs so a simple XML import isn't likely to work.
    See Sync iPod/iPad/iPhone with two computers and, if needed, Make a split library portable. The techniques in the first link will work when moving the library between Windows and OS X as long as the library is "portable", but iTunes takes quite some time checking the database when the library is opened under a different OS.
    tt2

Maybe you are looking for

  • How can I stop you from blocking a page when it doesn't need to be blocked

    When I try setting up the new myyahoo page, you have a shield blocking the page, but when I try to tell you to stop blocking, your page comes up with checking certificate to allow exception, but then after checking it tells me it has a valid certific

  • Displaying Row and Column Numbers

    I see through other research on Oracle SQL Developer that I should be able to display the row and column numbers on version 1.5.4, but I don't see where to go to turn this on. Suggestions?

  • CFImage EXIF Retrieval Error

    Need to utilize ImageGetExifMetaData to retrieve jpg orientation and size information to determine if modifications need to be made to photo. The tag is very inconsistent returning exif data. 80% of the time throws the following error: Exception occu

  • Is it okay to use the yellow USB port all of the time?

    Like a plugged in mouse or cooling pad for extended amounts of time?

  • Blank offline mixes in Nokia Music

    Has anyone experienced specific mixes dissapearing or appearing blank when downloaded to offline from Nokia Music? http://www.nokia.com/support