public class Repeats 
{
        
        private static final String ITEM1_XML 
= "/customXml/item1.xml";
        private static final String OUTPUT_FILE_PATH 
= System.
getProperty("user.dir") + "/repeats-out.docx";
        private static final String DATA_XML_FILE 
= System.
getProperty("user.dir") + "/input_docs/invoice-data.xml";
        private static final String DXA_TEXT 
= "dxa";
        private static final String OD_REPEAT_X2 
= "od:repeat=x2";
        
        private static final String STORE_ITEM_ID_OF_DATA_PART 
= "{8B049945-9DFE-4726-9DE9-CF5691E53858}";
        //private static final String STORE_ITEM_ID_OF_XPATHS_PART = "{5E015971-2421-4FFC-AD0A-CF7BDB8701E6}";
        private static final String INVOICE_ITEMS_NAME_XPATH 
= "/invoice[1]/items/item[1]/name";
        private static final String INVOICE_ITEMS_PRICE_XPATH 
= "/invoice[1]/items/item[1]/price";
        private static final String ITEM_TEXT 
= "Item";
        private static final String PRICE_TEXT 
= "Price";
        private static final String REPEAT_TEXT 
= "Repeat";
        private static final int RANDOM_ID_2 
= 1418037945;
        private static final int TABLE_WIDTH_6771 
= 6771;
        private static final int TABLE_WIDTH_2268 
= 2268;
        private static final String DESCRIPTION_TEXT 
= "Description";
        private static final int RANDOM_ID_1 
= 1418037946;
        private static final String DESCRIPTION_OD_XPATH_X3 
= "Description=Description&od:xpath=x3";
        private static final String APPLES_TEXT 
= "apples";
        private static final String PRICE_OD_XPATH_X4 
= "price=price&od:xpath=x4";
        private static final int RANDOM_ID_3 
= 1418037951;
        private static final String TWENTY_DOLLARS 
= "$20";
        private static final String TABLE_GRID 
= "TableGrid";
        private static final String AUTO_TEXT 
= "auto";
        private static final String TABLE_LOOK_VALUE 
= "04A0";
        private static final int ZERO 
= 0;
        private static final String PLACEHOLDER_VALUE 
= "E918F341A2F54C0A9743EE2731AB58B8";
        private static CustomXmlDataStoragePart customXMLDataStoragePart
;
        private Document document
;
        private WordprocessingMLPackage 
wordprocessingMLPackage;
        private XPathsPart xPathsPart
;
        public static void main
(String[] args
) throws Exception {
            Repeats repeats 
= new Repeats
();
            repeats.
createDocumentWithRepeats();
            
            // Add the data part
            CustomXmlDataStoragePart customXmlDataStoragePart 
= repeats.
injectCustomXmlDataStoragePart(repeats.
getMainDocumentPart(), 
new File(DATA_XML_FILE
));
            repeats.
addPropertiesPart(customXmlDataStoragePart, STORE_ITEM_ID_OF_DATA_PART
);
            
            // Add the XPaths Part
            repeats.
addXpathsPart();
            
            repeats.
save();
        }
        public Repeats
() throws Docx4JException 
{
            document 
= getWmlObjectFactory
().
createDocument();
            wordprocessingMLPackage 
= (WordprocessingMLPackage
) WordprocessingMLPackage.
load(new File(System.
getProperty("user.dir") + "/input_docs/empty.docx")).
clone();
        }
        private ObjectFactory getWmlObjectFactory
() {
            return new ObjectFactory();
        }
        
        private MainDocumentPart getMainDocumentPart
(){
            return wordprocessingMLPackage.
getMainDocumentPart();
        }
        private void save
() throws Docx4JException 
{
            String outputFilePath 
= OUTPUT_FILE_PATH
;
            wordprocessingMLPackage.
save(new File(outputFilePath
));
        }
        private void addXpathsPart
() throws InvalidFormatException 
{
            xPathsPart 
= new XPathsPart
(new PartName
(ITEM1_XML
));
            getMainDocumentPart
().
addTargetPart(xPathsPart, AddPartBehaviour.
RENAME_IF_NAME_EXISTS);
            xPathsPart.
setJaxbElement(new Xpaths
());
            // for Repeat
            Xpaths.
Xpath xp 
= createXpath
();
            Xpaths.
Xpath.
DataBinding db 
= createDataBinding
();
            xp.
setId("x2");
            db.
setXpath("/invoice[1]/items/item[1]");
            db.
setStoreItemID(STORE_ITEM_ID_OF_DATA_PART
);
            xp.
setDataBinding(db
);
            xPathsPart.
getJaxbElement().
getXpath().
add(xp
);
            
            // for Price
            Xpaths.
Xpath xp2 
= createXpath
();
            Xpaths.
Xpath.
DataBinding db2 
= createDataBinding
();
            xp2.
setId("x4");
            db2.
setXpath(INVOICE_ITEMS_PRICE_XPATH
);
            db2.
setStoreItemID(STORE_ITEM_ID_OF_DATA_PART
);
            xp2.
setDataBinding(db2
);
            xPathsPart.
getJaxbElement().
getXpath().
add(xp2
);
            // for item Name
            Xpaths.
Xpath xp1 
= createXpath
();
            Xpaths.
Xpath.
DataBinding db1 
= createDataBinding
();
            xp1.
setId("x3");
            db1.
setXpath(INVOICE_ITEMS_NAME_XPATH
);
            db1.
setStoreItemID(STORE_ITEM_ID_OF_DATA_PART
);
            xp1.
setDataBinding(db1
);
            xPathsPart.
getJaxbElement().
getXpath().
add(xp1
);
            
            //addPropertiesPart(xPathsPart, STORE_ITEM_ID_OF_XPATHS_PART);
            
        }
        private  CustomXmlDataStoragePart injectCustomXmlDataStoragePart
(Part parent
) throws Exception {
            org.
docx4j.
openpackaging.
parts.
CustomXmlDataStoragePart customXmlDataStoragePart 
=
                    new org.
docx4j.
openpackaging.
parts.
CustomXmlDataStoragePart();
            // Defaults to /customXml/item1.xml
            CustomXmlDataStorage data 
= new CustomXmlDataStorageImpl
();
            data.
setDocument(createCustomXmlDocument
(new File(DATA_XML_FILE
)));
            customXmlDataStoragePart.
setData(data
);
            parent.
addTargetPart(customXmlDataStoragePart, RelationshipsPart.
AddPartBehaviour.
RENAME_IF_NAME_EXISTS);
            
            return customXmlDataStoragePart
;
        }
        private void addPropertiesPart
(Part customXmlDataStoragePart, 
String itemID
) throws InvalidFormatException 
{
            CustomXmlDataStoragePropertiesPart part 
= new CustomXmlDataStoragePropertiesPart
();
            org.
docx4j.
customXmlProperties.
ObjectFactory of 
= new org.
docx4j.
customXmlProperties.
ObjectFactory();
            DatastoreItem dsi 
= of.
createDatastoreItem();
            String newItemId 
= itemID
;
            dsi.
setItemID(newItemId
);
            part.
setJaxbElement(dsi 
);
            customXmlDataStoragePart.
addTargetPart(part
);
        }
        private Xpaths.
Xpath.
DataBinding createDataBinding
() {
            return new org.
opendope.
xpaths.
ObjectFactory().
createXpathsXpathDataBinding();
        }
        private Xpaths.
Xpath createXpath
() {
            return new org.
opendope.
xpaths.
ObjectFactory().
createXpathsXpath();
        }
        public void createDocumentWithRepeats
() {
            ObjectFactory wmlObjectFactory 
= new ObjectFactory();
                
                Body body 
= getMainDocumentPart
().
getJaxbElement().
getBody();
            // Create object for p
            P p 
= wmlObjectFactory.
createP();
            body.
getContent().
add( p
);
            // Create object for tbl (wrapped in JAXBElement) 
            Tbl tbl 
= wmlObjectFactory.
createTbl();
            JAXBElement
<org.
docx4j.
wml.
Tbl> tblWrapped 
= wmlObjectFactory.
createBodyTbl(tbl
);
            body.
getContent().
add( tblWrapped
);
            // Create object for tr
            Tr tr 
= wmlObjectFactory.
createTr();
            tbl.
getContent().
add( tr
);
            // Create object for tc (wrapped in JAXBElement)
            Tc tc 
= wmlObjectFactory.
createTc();
            JAXBElement
<org.
docx4j.
wml.
Tc> tcWrapped 
= wmlObjectFactory.
createTrTc(tc
);
            tr.
getContent().
add( tcWrapped
);
            // Create object for p
            P p2 
= wmlObjectFactory.
createP();
            tc.
getContent().
add( p2
);
            // Create object for r
            R r 
= wmlObjectFactory.
createR();
            p2.
getContent().
add( r
);
            // Create object for t (wrapped in JAXBElement)
            Text text 
= wmlObjectFactory.
createText();
            JAXBElement
<org.
docx4j.
wml.
Text> textWrapped 
= wmlObjectFactory.
createRT(text
);
            r.
getContent().
add( textWrapped
);
            text.
setValue(ITEM_TEXT
);
            // Create object for tcPr
            TcPr tcpr 
= wmlObjectFactory.
createTcPr();
            tc.
setTcPr(tcpr
);
            // Create object for tcW
            TblWidth tblwidth 
= wmlObjectFactory.
createTblWidth();
            tcpr.
setTcW(tblwidth
);
            tblwidth.
setW( BigInteger.
valueOf(TABLE_WIDTH_6771
) );
            tblwidth.
setType(DXA_TEXT
);
            // Create object for tc (wrapped in JAXBElement)
            Tc tc2 
= wmlObjectFactory.
createTc();
            JAXBElement
<org.
docx4j.
wml.
Tc> tcWrapped2 
= wmlObjectFactory.
createTrTc(tc2
);
            tr.
getContent().
add( tcWrapped2
);
            // Create object for p
            P p3 
= wmlObjectFactory.
createP();
            tc2.
getContent().
add( p3
);
            // Create object for r
            R r2 
= wmlObjectFactory.
createR();
            p3.
getContent().
add( r2
);
            // Create object for t (wrapped in JAXBElement)
            Text text2 
= wmlObjectFactory.
createText();
            JAXBElement
<org.
docx4j.
wml.
Text> textWrapped2 
= wmlObjectFactory.
createRT(text2
);
            r2.
getContent().
add( textWrapped2
);
            text2.
setValue(PRICE_TEXT
);
            // Create object for tcPr
            TcPr tcpr2 
= wmlObjectFactory.
createTcPr();
            tc2.
setTcPr(tcpr2
);
            // Create object for tcW
            TblWidth tblwidth2 
= wmlObjectFactory.
createTblWidth();
            tcpr2.
setTcW(tblwidth2
);
            tblwidth2.
setW( BigInteger.
valueOf(TABLE_WIDTH_2268
) );
            tblwidth2.
setType(DXA_TEXT
);
            
            // The repeat
            
            // Create object for sdt (wrapped in JAXBElement)
            CTSdtRow sdtrow 
= wmlObjectFactory.
createCTSdtRow();
            JAXBElement
<org.
docx4j.
wml.
CTSdtRow> sdtrowWrapped 
= wmlObjectFactory.
createTblSdt(sdtrow
);
            tbl.
getContent().
add( sdtrowWrapped
);
            // Create object for sdtPr
            SdtPr sdtpr 
= wmlObjectFactory.
createSdtPr();
            sdtrow.
setSdtPr(sdtpr
);
            // Create object for alias (wrapped in JAXBElement)
            SdtPr.
Alias sdtpralias 
= wmlObjectFactory.
createSdtPrAlias();
            JAXBElement
<org.
docx4j.
wml.
SdtPr.
Alias> sdtpraliasWrapped 
= wmlObjectFactory.
createSdtPrAlias(sdtpralias
);
            sdtpr.
getRPrOrAliasOrLock().
add( sdtpraliasWrapped
);
            sdtpralias.
setVal(REPEAT_TEXT
);
            // Create object for tag
            Tag tag 
= wmlObjectFactory.
createTag();
            sdtpr.
getRPrOrAliasOrLock().
add( tag
);
            tag.
setVal(OD_REPEAT_X2
);
            // Create object for id
            Id id 
= wmlObjectFactory.
createId();
            sdtpr.
getRPrOrAliasOrLock().
add( id
);
            id.
setVal( BigInteger.
valueOf(RANDOM_ID_2
) );
            // Create object for tag
            Tag tag2 
= wmlObjectFactory.
createTag();
            sdtpr.
setTag(tag2
);
            tag2.
setVal(OD_REPEAT_X2
);
            // Create object for id
            Id id2 
= wmlObjectFactory.
createId();
            sdtpr.
setId(id2
);
            id2.
setVal( BigInteger.
valueOf(RANDOM_ID_2
) );
            
            // The repeat's contents
            
            // Create object for sdtContent
            CTSdtContentRow sdtcontentrow 
= wmlObjectFactory.
createCTSdtContentRow();
            sdtrow.
setSdtContent(sdtcontentrow
);
            // Create object for tr
            Tr tr2 
= wmlObjectFactory.
createTr();
            sdtcontentrow.
getContent().
add( tr2
);
            
            
            // Create object for sdt (wrapped in JAXBElement)
            CTSdtCell sdtcell 
= wmlObjectFactory.
createCTSdtCell();
            JAXBElement
<org.
docx4j.
wml.
CTSdtCell> sdtcellWrapped 
= wmlObjectFactory.
createTrSdt(sdtcell
);
            tr2.
getContent().
add( sdtcellWrapped
);
            // Create object for sdtPr
            SdtPr sdtpr2 
= wmlObjectFactory.
createSdtPr();
            sdtcell.
setSdtPr(sdtpr2
); 
            
            // Create object for dataBinding
            CTDataBinding databinding 
= wmlObjectFactory.
createCTDataBinding();
            sdtpr2.
setDataBinding(databinding
);
            databinding.
setStoreItemID(STORE_ITEM_ID_OF_DATA_PART
);  // you'll need to alter this
            databinding.
setXpath(INVOICE_ITEMS_NAME_XPATH
);
            // Create object for alias (wrapped in JAXBElement)
            SdtPr.
Alias sdtpralias2 
= wmlObjectFactory.
createSdtPrAlias();
            JAXBElement
<org.
docx4j.
wml.
SdtPr.
Alias> sdtpraliasWrapped2 
= wmlObjectFactory.
createSdtPrAlias(sdtpralias2
);
            sdtpr2.
getRPrOrAliasOrLock().
add( sdtpraliasWrapped2
);
            sdtpralias2.
setVal(DESCRIPTION_TEXT
);
            // Create object for tag
            Tag tag3 
= wmlObjectFactory.
createTag();
            sdtpr2.
getRPrOrAliasOrLock().
add( tag3
);
            tag3.
setVal(DESCRIPTION_OD_XPATH_X3
);
            // Create object for id
            Id id3 
= wmlObjectFactory.
createId();
            sdtpr2.
getRPrOrAliasOrLock().
add( id3
);
            id3.
setVal( BigInteger.
valueOf(RANDOM_ID_1
) );
            
            // Create object for text (wrapped in JAXBElement)
            CTSdtText sdttext 
= wmlObjectFactory.
createCTSdtText();
            JAXBElement
<org.
docx4j.
wml.
CTSdtText> sdttextWrapped 
= wmlObjectFactory.
createSdtPrText(sdttext
);
            sdtpr2.
getRPrOrAliasOrLock().
add( sdttextWrapped
);
            // Create object for tag
            Tag tag4 
= wmlObjectFactory.
createTag();
            sdtpr2.
setTag(tag4
);
            tag4.
setVal(DESCRIPTION_OD_XPATH_X3
);  // you'll need to alter this
            // Create object for id
            Id id4 
= wmlObjectFactory.
createId();
            sdtpr2.
setId(id4
);
            id4.
setVal( BigInteger.
valueOf(RANDOM_ID_1
) );
            // Create object for sdtContent
            CTSdtContentCell sdtcontentcell 
= wmlObjectFactory.
createCTSdtContentCell();
            sdtcell.
setSdtContent(sdtcontentcell
);
            // Create object for tc (wrapped in JAXBElement)
            Tc tc3 
= wmlObjectFactory.
createTc();
            JAXBElement
<org.
docx4j.
wml.
Tc> tcWrapped3 
= wmlObjectFactory.
createCTSdtContentCellTc(tc3
);
            sdtcontentcell.
getContent().
add( tcWrapped3
);
            // Create object for p
            P p4 
= wmlObjectFactory.
createP();
            tc3.
getContent().
add( p4
);
            // Create object for r
            R r3 
= wmlObjectFactory.
createR();
            p4.
getContent().
add( r3
);
            // Create object for t (wrapped in JAXBElement)
            Text text3 
= wmlObjectFactory.
createText();
            JAXBElement
<org.
docx4j.
wml.
Text> textWrapped3 
= wmlObjectFactory.
createRT(text3
);
            r3.
getContent().
add( textWrapped3
);
            text3.
setValue(APPLES_TEXT
);
            // Create object for tcPr
            TcPr tcpr3 
= wmlObjectFactory.
createTcPr();
            tc3.
setTcPr(tcpr3
);
            // Create object for tcW
            TblWidth tblwidth3 
= wmlObjectFactory.
createTblWidth();
            tcpr3.
setTcW(tblwidth3
);
            tblwidth3.
setW( BigInteger.
valueOf( TABLE_WIDTH_6771
) );
            tblwidth3.
setType(DXA_TEXT
);
            
            
            
            
            
            // Create object for sdt (wrapped in JAXBElement)
            CTSdtCell sdtcell2 
= wmlObjectFactory.
createCTSdtCell();
            JAXBElement
<org.
docx4j.
wml.
CTSdtCell> sdtcellWrapped2 
= wmlObjectFactory.
createTrSdt(sdtcell2
);
            tr2.
getContent().
add( sdtcellWrapped2
);
            // Create object for sdtPr
            SdtPr sdtpr3 
= wmlObjectFactory.
createSdtPr();
            sdtcell2.
setSdtPr(sdtpr3
);
            // Create object for dataBinding
            CTDataBinding databinding3 
= wmlObjectFactory.
createCTDataBinding();
            sdtpr3.
setDataBinding(databinding3
);
            databinding3.
setStoreItemID(STORE_ITEM_ID_OF_DATA_PART
);
            databinding3.
setXpath(INVOICE_ITEMS_PRICE_XPATH
);
            // Create object for alias (wrapped in JAXBElement)
            SdtPr.
Alias sdtpralias3 
= wmlObjectFactory.
createSdtPrAlias();
            JAXBElement
<org.
docx4j.
wml.
SdtPr.
Alias> sdtpraliasWrapped3 
= wmlObjectFactory.
createSdtPrAlias(sdtpralias3
);
            sdtpr3.
getRPrOrAliasOrLock().
add( sdtpraliasWrapped3
);
            sdtpralias3.
setVal(PRICE_TEXT
);
            // Create object for tag
            Tag tag5 
= wmlObjectFactory.
createTag();
            sdtpr3.
getRPrOrAliasOrLock().
add( tag5
);
            tag5.
setVal(PRICE_OD_XPATH_X4
);
            // Create object for id
            Id id5 
= wmlObjectFactory.
createId();
            sdtpr3.
getRPrOrAliasOrLock().
add( id5
);
            id5.
setVal( BigInteger.
valueOf(RANDOM_ID_3
) );
            // Create object for placeholder (wrapped in JAXBElement)
            CTPlaceholder placeholder3 
= wmlObjectFactory.
createCTPlaceholder();
            JAXBElement
<org.
docx4j.
wml.
CTPlaceholder> placeholderWrapped3 
= wmlObjectFactory.
createSdtPrPlaceholder(placeholder3
);
            sdtpr3.
getRPrOrAliasOrLock().
add( placeholderWrapped3
);
            // Create object for docPart
            CTPlaceholder.
DocPart placeholderdocpart3 
= wmlObjectFactory.
createCTPlaceholderDocPart();
            placeholder3.
setDocPart(placeholderdocpart3
);
            placeholderdocpart3.
setVal(PLACEHOLDER_VALUE
);
            // Create object for text (wrapped in JAXBElement)
            CTSdtText sdttext2 
= wmlObjectFactory.
createCTSdtText();
            JAXBElement
<org.
docx4j.
wml.
CTSdtText> sdttextWrapped2 
= wmlObjectFactory.
createSdtPrText(sdttext2
);
            sdtpr3.
getRPrOrAliasOrLock().
add( sdttextWrapped2
);
            // Create object for tag
            Tag tag6 
= wmlObjectFactory.
createTag();
            sdtpr3.
setTag(tag6
);
            tag6.
setVal(PRICE_OD_XPATH_X4
);
            // Create object for id
            Id id6 
= wmlObjectFactory.
createId();
            sdtpr3.
setId(id6
);
            id6.
setVal( BigInteger.
valueOf(RANDOM_ID_3
) );
            // Create object for sdtContent
            CTSdtContentCell sdtcontentcell2 
= wmlObjectFactory.
createCTSdtContentCell();
            sdtcell2.
setSdtContent(sdtcontentcell2
);
            // Create object for tc (wrapped in JAXBElement)
            Tc tc4 
= wmlObjectFactory.
createTc();
            JAXBElement
<org.
docx4j.
wml.
Tc> tcWrapped4 
= wmlObjectFactory.
createCTSdtContentCellTc(tc4
);
            sdtcontentcell2.
getContent().
add( tcWrapped4
);
            // Create object for p
            P p5 
= wmlObjectFactory.
createP();
            tc4.
getContent().
add( p5
);
            // Create object for r
            R r4 
= wmlObjectFactory.
createR();
            p5.
getContent().
add( r4
);
            // Create object for t (wrapped in JAXBElement)
            Text text4 
= wmlObjectFactory.
createText();
            JAXBElement
<org.
docx4j.
wml.
Text> textWrapped4 
= wmlObjectFactory.
createRT(text4
);
            r4.
getContent().
add( textWrapped4
);
            text4.
setValue(TWENTY_DOLLARS
);
            // Create object for tcPr
            TcPr tcpr4 
= wmlObjectFactory.
createTcPr();
            tc4.
setTcPr(tcpr4
);
            // Create object for tcW
            TblWidth tblwidth4 
= wmlObjectFactory.
createTblWidth();
            tcpr4.
setTcW(tblwidth4
);
            tblwidth4.
setW( BigInteger.
valueOf(TABLE_WIDTH_2268
) );
            tblwidth4.
setType(DXA_TEXT
);
            // Create object for tblPr
            TblPr tblpr 
= wmlObjectFactory.
createTblPr();
            tbl.
setTblPr(tblpr
);
            // Create object for tblStyle
            CTTblPrBase.
TblStyle tblprbasetblstyle 
= wmlObjectFactory.
createCTTblPrBaseTblStyle();
            tblpr.
setTblStyle(tblprbasetblstyle
);
            tblprbasetblstyle.
setVal(TABLE_GRID
);
            // Create object for tblW
            TblWidth tblwidth5 
= wmlObjectFactory.
createTblWidth();
            tblpr.
setTblW(tblwidth5
);
            tblwidth5.
setW( BigInteger.
valueOf(ZERO
) );
            tblwidth5.
setType(AUTO_TEXT
);
            // Create object for tblLook
            CTTblLook tbllook 
= wmlObjectFactory.
createCTTblLook();
            tblpr.
setTblLook(tbllook
);
            tbllook.
setVal(TABLE_LOOK_VALUE
);
            tbllook.
setFirstColumn(org.
docx4j.
sharedtypes.
STOnOff.
ONE);
            tbllook.
setFirstRow(org.
docx4j.
sharedtypes.
STOnOff.
ONE);
            tbllook.
setLastColumn(org.
docx4j.
sharedtypes.
STOnOff.
ZERO);
            tbllook.
setLastRow(org.
docx4j.
sharedtypes.
STOnOff.
ZERO);
            tbllook.
setNoHBand(org.
docx4j.
sharedtypes.
STOnOff.
ZERO);
            tbllook.
setNoVBand(org.
docx4j.
sharedtypes.
STOnOff.
ONE);
            // Create object for tblGrid
            TblGrid tblgrid 
= wmlObjectFactory.
createTblGrid();
            tbl.
setTblGrid(tblgrid
);
            // Create object for gridCol
            TblGridCol tblgridcol 
= wmlObjectFactory.
createTblGridCol();
            tblgrid.
getGridCol().
add( tblgridcol
);
            tblgridcol.
setW( BigInteger.
valueOf( TABLE_WIDTH_6771
) );
            // Create object for gridCol
            TblGridCol tblgridcol2 
= wmlObjectFactory.
createTblGridCol();
            tblgrid.
getGridCol().
add( tblgridcol2
);
            tblgridcol2.
setW( BigInteger.
valueOf(TABLE_WIDTH_2268
) );
            // Create object for p
            P p6 
= wmlObjectFactory.
createP();
            body.
getContent().
add( p6
);
        }
        private CustomXmlDataStoragePart injectCustomXmlDataStoragePart
(Part parent, 
File inputXmlFile
) throws Exception {
            org.
docx4j.
openpackaging.
parts.
CustomXmlDataStoragePart customXmlDataStoragePart 
=
                    new org.
docx4j.
openpackaging.
parts.
CustomXmlDataStoragePart();
            // Defaults to /customXml/item1.xml
            CustomXmlDataStorage data 
= new CustomXmlDataStorageImpl
();
            data.
setDocument(createCustomXmlDocument
(inputXmlFile
));
            customXmlDataStoragePart.
setData(data
);
            parent.
addTargetPart(customXmlDataStoragePart, RelationshipsPart.
AddPartBehaviour.
RENAME_IF_NAME_EXISTS);
            return customXmlDataStoragePart
;
        }
        private org.
w3c.
dom.
Document createCustomXmlDocument
(File xmlFile
) throws ParserConfigurationException, 
IOException, SAXException 
{
            DocumentBuilderFactory documentBuilderFactory 
= DocumentBuilderFactory.
newInstance();
            documentBuilderFactory.
setNamespaceAware(true);
            DocumentBuilder documentBuilder 
= documentBuilderFactory.
newDocumentBuilder();
            org.
w3c.
dom.
Document document 
= documentBuilder.
parse(xmlFile
);
            return document
;
        }
    }
 Parsed in 0.053 seconds,  using 
GeSHi 1.0.8.4