I am trying to create HTML file from the result of an execution. The result is in the form of XML. There are few transformers that I can use to transform XML to HTML using XSLT file.
Other thing I will also have is the JAVA object of result which I can use for converting it to HTML.
Which of the above two approach is better and is there any API that I can use to convert java object to HTML other than XSLT or FILE I/O.
any one help?
I believe you have to go by xml (either directly or generated from your java object by jaxb).
In principle the templating frameworks (Velocity, Freemarker ...) can let you prepare a template into which you can inject your java object and render the response as you whish. But personally I think it will be easier/simple just to transform the xml that you already have
Related
My Java application takes XML input, and parses it using the simpleframework. I want it to accept JSON as well, therefore I want to convert the JSON to XML.
Tags and attributes are important, therefore I use the Badgerfish convention.
This works well in Python with xmljson, but I can't find a decent package to do this. GSON doesn't seem to have a Badgerfish implementation. This topic doesn't provide any tag/attribute retaining packages, the topic is a bit old as well.
Which Java packages can do the conversion from JSON to XML while putting tags/attributes at the right place?
Suggestions for alternative methods than Badgerfish are welcome as well...
Many thanks in advance!
You can use the XPath 3.1 json-to-xml() function, and then do an XSLT transformation on the generated XML to get it into the format you require.
Need some inputs on the below problem.
I have a flat file which contains Accounts numbers
Account1:Valid
Account2:Valid
Account3:Invalid
There is another system generated XML whose contents are transformed in Java via a Transformer class through an XSL file.
I need to enhance the XSL file so that it takes Accounts from flat file into consideration and based on Valid or Invalid status, generate the o/p response XML.
Any pointers on how to approach this? In Java application, I have done simple transformation. But how to enhance to take data from Flat File into consideration ?
If you want to do it with the input as shown, then you need to use XSLT 2.0 and later to use unparsed-text("accounts.txt") to read in the text file and for instance parse it with tokenize(unparsed-text("accounts.txt"), '\n') into lines and/or further with xsl:analyze-string.
XSLT 2.0 is supported in Java by Saxon 9 from http://saxon.sourceforge.net/.
With XSLT 1.0 all you could do is pass in a string parameter with the file contents and then use the rudimentary string functions in XPath 1.0 and named templates to extract the data.
I have a requirement to transform an incoming JSON to an output JSON. For this I am looking for a solution that can work based on templates. What I have in my mind is a solution on lines of XSLT transformation that allows converting an XML to a desired output format (XML, HTML, Text) defined by the style sheet.
One option(or rather a workaround) to use XSLT is to convert JSON to XML that is:
input JSON -> XML -> transform -> output JSON
This approach would have a performance overhead of converting JSON to XML and this would become prominent as the size of incoming object increases.
I found a Node/client layer solution that transforms JSON based on the rules specified in a template. More details about can be found [here][1]. However, I was not able to find any solution that works for a java based application.
Any thoughts/help in terms of solution/frameworks to resolve this would be really helpful.
Thanks.
You could try JOLT, advertised as a JSON to JSON transformation library written in Java.
Or you can search this thread for other libraries and tools which can transform JSON.
The new XSLT 3.0 draft also includes support for JSON as input and output format. Saxon has already started an implementation and seems to support for the JSON part.
You could try JSLT, which is a transform language where you write the fixed part of the output in JSON syntax, then insert expressions to compute the values you want to insert in the template. It's quite similar to how XSLT and XPath work together.
It's implemented in Java on top of Jackson.
For simple transformations you can use jmom library.
For a complex transformation you can use template framework like freemarker.
And convert json data to Map/List form using json library so it can be used by template framework.
i have an application which generates test case results in the form of HTML table.
I need to convert this html table data into JUnit XML format for some other usage.
How can I parse each entry in of a table. I have browsed over internet, people are commenting other posts to conver html to xhtml which is xml equivalent but this doesn't suffice my requirement. I want the xml to be based on Junit xsd schema
You need a two step process. Use an HTML parser to create a DOM. There's lots to choose from in Java
When you've parsed the HTML and got a DOM, you can transform it into the XML form you want, either by hand code, or by using a transformation language like XSLT. Xalan is typically the library you want for performing XSLT transforms in Java.
I am writing a simple CSV to XML processor in Java.
I am using JAXB to generate a model in java from a DTD. I need to process the CSV format into this model, and then marshall it into the XML that complies to the DTD. I am using JAXB to marhall the data from the Java model to the XML. I have to write the CSV-Model mapping myself.
At the moment, I can think of no better solution than to straight map the CSV to the Java model by reading it in and assigning it to the model in code.
Is there a more elegant solution to this that you can think of? Perhaps some reusable mapping library etc?
Thanks in advance.
I usually use the flatpack library to parse CSVs into Java Models :
Flatpack Project on sourceforge
It is quite simple to use and use XML mappings to handle the CSV to Model projection (thus not inducing thight coupling between your csv and your java objects)
If you have a straightforard mapping, you could use a thirdparty tool to directly map csv to xml (e.g. csv2xml converter
Alternatively, read the csv file as a collection of maps with the 'key' as the name of the corresponding property in the java class. Then you can write a simple parser that will use reflection to set the csv values from the map into java objects.