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 >>> >>> >> ᐧ >> >
signature.asc
Description: Message signed with OpenPGP
