You hear it, Ralf! No reason to fork and throw at some later time your work over the digital fence. Instead become the new ruler of the Simple API :) Make it your work base!
Have a nice evening (at least hear it is night), Svante ᐧ 2018-05-10 23:27 GMT+02:00 Dave Fisher <[email protected]>: > Hi Svante - > > Just a note, but ODFToolkit desperately needs active developers who are > enabled to work on the code directly. > > Regards, > Dave > > > On May 10, 2018, at 2:02 PM, Ralf Heydenreich <[email protected]> > wrote: > > > > Hi David, > > I've solved this problem with creation of a separate node. You can find > > an example here: > > https://bitbucket.org/fakturamadev/fakturama-2/src/ > 0b8ffae87c445ddd7e0618ecf643591ee933ba15/Fakturama-Parent/ > org.fakturama.print.openoffice/src/main/java/org/odftoolkit/simple/common/ > navigation/PlaceholderNode.java?at=develop&fileviewer=file-view-default > > > > > > Look at the "replaceWith(...)"-methods. This is a class from my own > > OpenSource project, extending the ODFToolkit with a placeholder > > replacement functionality. In short, it replaces a placeholder with the > > according String. Unfortunately, I didn't have the time to build a > > sample project and contribute it to this project (sorry, Svante ;-) ). > > But it's a point at my agenda... > > > > Regards, > > Ralf. > > > > > > Am 10.05.2018 um 22:34 schrieb Svante Schubert: > >> Hello David, > >> > >> to reproduce your problem, I have added a test case in one of the > existing > >> tests of the Simple API. > >> > >> @Test > >> public void testXMLasString() { > >> try { > >> TextDocument resDoc = (TextDocument) > >> TextDocument.loadDocument(ResourceUtilities.getTestResourceAsStream(" > section.odt")); > >> Section section = resDoc.getSectionByName( "Section1" ); // > >> this section does exist in the document > >> > >> // create new node form String > >> String fragment = "<text:p text:style-name=\"P13\"><text: > span > >> text:style-name=\"T1\">Test</text:span></text:p>"; > >> Node node = > >> DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new > >> InputSource(new StringReader(fragment ))).getDocumentElement(); > >> node = section.getOdfElement(). > getOwnerDocument().importNode( > >> node, true ); > >> // append new node into section > >> section.getOdfElement().appendChild( node ); > >> > >> resDoc.save(ResourceUtilities.newTestOutputFile(" > sectionWithText.odt")); > >> } catch (Exception e) { > >> Logger.getLogger(ListItemTest.class.getName()).log(Level.SEVERE, null, > e); > >> Assert.fail(e.getMessage()); > >> } > >> } > >> > >> It is not REALLY a test as it always succeeds, but by this, I am able to > >> debug in the IDE and first of all get a document from your procedure. > >> You might want to do the same. > >> > >> An OpenDocument File is a ZIP with XML files within. You can unzip it > and > >> take a look into the content.xml > >> I usually use the JEdit editor with the "archive" and "XML" plugin to > open > >> the content.xml file without unpacking and make an indent for the XML. > >> > >> If you do so it reveals the following: > >> <text:section text:name="Section1" text:style-name="Sect1"> > >> <text:p text:style-name="Standard"/> > >> <p style-name="P13"><span style-name="T1">Test</span></ > p></text:section> > >> > >> The string is inserted, but the prefix, the namespace was not found. You > >> might get the DOM element and insert the elements one by one with DOM > >> functions or search for a solution. > >> Uncertain how it works by String insertion. If you find a way, please > come > >> back and tell :) > >> > >> Good luck! > >> Svante > >> > >> 2018-05-10 12:08 GMT+02:00 David Michal <[email protected]>: > >> > >>> Hi, > >>> > >>> I have a code: > >>> > >>> // ----------------------------------------------------------------- > >>> > >>> TextDocument resDoc = TextDocument.loadDocument( someInputStream ); > >>> > >>> Section section = resDoc.getSectionByName( "Section1" ); // this > section > >>> does exist in the document > >>> > >>> // create new node form String > >>> > >>> String fragment = "<text:p text:style-name=\"P13\"><text:span > >>> text:style-name=\"T1\">Test</text:span></text:p>"; > >>> > >>> Node node = DocumentBuilderFactory.newInstance(). > newDocumentBuilder().parse( > >>> new InputSource( new StringReader( fragment ) ) ).getDocumentElement(); > >>> node = section.getOdfElement().getOwnerDocument().importNode( node, > true > >>> ); > >>> > >>> // append new node into section > >>> > >>> section.getOdfElement().appendChild( node ); > >>> > >>> // ----------------------------------------------------------------- > >>> > >>> The code runs without a problem. But nothing does appear in the > section in > >>> the result document. Please any idea how can I add new nodes created > from > >>> string into the odf document? > >>> > >>> Thanks, > >>> > >>> David > >>> > >>> > >> ᐧ > >> > > > >
