From 7e8ba52517e9c0871bc46d82b609ddc25ba7020b Mon Sep 17 00:00:00 2001 From: YuCheng Hu Date: Tue, 29 Apr 2025 18:13:05 -0400 Subject: [PATCH 1/3] Merge from remote --- xml-2/README.md | 11 +- xml-2/pom.xml | 334 ++++++++++++++++-- .../xml/prettyprint/XmlPrettyPrinter.java | 91 ----- .../com/baeldung/xml/tohashmap/Employees.java | 5 +- .../baeldung/xml/tohashmap/XmlToHashMap.java | 6 +- .../xml/validation/XmlErrorHandler.java | 35 -- .../baeldung/xml/validation/XmlValidator.java | 62 ---- xml-2/src/main/resources/xml/prettyprint.xsl | 11 - .../resources/xml/validation/baeldung.xml | 8 - .../resources/xml/validation/full-person.xsd | 25 -- .../main/resources/xml/validation/person.xsd | 18 - .../xml/XMLDocumentWriterUnitTest.java | 51 +++ .../xml/json2xml/JsonToXmlUnitTest.java | 77 ---- .../xml/tohashmap/XmlToHashMapUnitTest.java | 3 +- .../xml/validation/XmlValidatorUnitTest.java | 35 -- .../XMLStringToDocumentObjectUnitTest.java | 2 +- .../xml2string/XMLObjectToStringUnitTest.java | 87 ----- .../delhtmltags/RemoveHtmlTagsLiveTest.java | 61 ++++ .../FreemarkerTransformerUnitTest.java | 32 ++ .../xmlhtml/jaxp/JaxpTransformerUnitTest.java | 33 ++ .../mustache/MustacheTransformerUnitTest.java | 30 ++ .../xmlhtml/stax/StaxTransformerUnitTest.java | 30 ++ xml-2/src/test/resources/Customer1.xml | 16 + .../test/resources/templates/freemarker.html | 11 + .../resources/templates/template.mustache | 11 + xml-2/src/test/resources/xml/attribute.xml | 5 + .../test/resources/xml/attribute_expected.xml | 5 + .../src/test/resources/xml/xee_attribute.xml | 9 + .../xmlhtml/delhtmltags/example1.html | 15 + .../xmlhtml/delhtmltags/example2.html | 22 ++ .../test/resources/xmlhtml/notification.html | 11 + .../test/resources/xmlhtml/notification.xml | 6 + 32 files changed, 675 insertions(+), 483 deletions(-) delete mode 100644 xml-2/src/main/java/com/baeldung/xml/prettyprint/XmlPrettyPrinter.java delete mode 100644 xml-2/src/main/java/com/baeldung/xml/validation/XmlErrorHandler.java delete mode 100644 xml-2/src/main/java/com/baeldung/xml/validation/XmlValidator.java delete mode 100644 xml-2/src/main/resources/xml/prettyprint.xsl delete mode 100644 xml-2/src/main/resources/xml/validation/baeldung.xml delete mode 100644 xml-2/src/main/resources/xml/validation/full-person.xsd delete mode 100644 xml-2/src/main/resources/xml/validation/person.xsd create mode 100644 xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java delete mode 100644 xml-2/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java delete mode 100644 xml-2/src/test/java/com/baeldung/xml/validation/XmlValidatorUnitTest.java delete mode 100644 xml-2/src/test/java/com/baeldung/xml/xml2string/XMLObjectToStringUnitTest.java create mode 100644 xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java create mode 100644 xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java create mode 100644 xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java create mode 100644 xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java create mode 100644 xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java create mode 100644 xml-2/src/test/resources/Customer1.xml create mode 100644 xml-2/src/test/resources/templates/freemarker.html create mode 100644 xml-2/src/test/resources/templates/template.mustache create mode 100644 xml-2/src/test/resources/xml/attribute.xml create mode 100644 xml-2/src/test/resources/xml/attribute_expected.xml create mode 100644 xml-2/src/test/resources/xml/xee_attribute.xml create mode 100644 xml-2/src/test/resources/xmlhtml/delhtmltags/example1.html create mode 100644 xml-2/src/test/resources/xmlhtml/delhtmltags/example2.html create mode 100644 xml-2/src/test/resources/xmlhtml/notification.html create mode 100644 xml-2/src/test/resources/xmlhtml/notification.xml diff --git a/xml-2/README.md b/xml-2/README.md index 6040137dc1..f54ed9f55f 100644 --- a/xml-2/README.md +++ b/xml-2/README.md @@ -4,12 +4,15 @@ This module contains articles about eXtensible Markup Language (XML) ### Relevant Articles: -- [Pretty-Print XML in Java](https://www.baeldung.com/java-pretty-print-xml) -- [Validate an XML File Against an XSD File](https://www.baeldung.com/java-validate-xml-xsd) -- [Converting JSON to XML in Java](https://www.baeldung.com/java-convert-json-to-xml) -- [Convert an XML Object to a String in Java](https://www.baeldung.com/java-convert-xml-object-string) - [Convert String Containing XML to org.w3c.dom.Document](https://www.baeldung.com/java-convert-string-xml-dom) - [How to Parse XML to HashMap in Java](https://www.baeldung.com/java-xml-read-into-hashmap) - [Convert an XML File to CSV File](https://www.baeldung.com/java-convert-xml-csv) - [Invalid Characters in XML](https://www.baeldung.com/java-xml-invalid-characters) +- [How to Convert XML to PDF](https://www.baeldung.com/java-xml-pdf-conversion) +- [How to Convert org.w3c.dom.Document to String in Java](https://www.baeldung.com/java-convert-org-w3c-dom-document-string) +- [Introduction to JiBX](https://www.baeldung.com/jibx) +- [Write an org.w3.dom.Document to a File](https://www.baeldung.com/java-write-xml-document-file) +- [Modifying an XML Attribute in Java](https://www.baeldung.com/java-modify-xml-attribute) +- [Convert XML to HTML in Java](https://www.baeldung.com/java-convert-xml-to-html) + - - More articles: [[prev -->]](../xml) diff --git a/xml-2/pom.xml b/xml-2/pom.xml index 977cd8a816..fa5d91f740 100644 --- a/xml-2/pom.xml +++ b/xml-2/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 xml-2 0.1-SNAPSHOT @@ -26,16 +26,6 @@ ${junit-jupiter.version} test - - org.json - json - ${json.version} - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - com.fasterxml.jackson.dataformat jackson-dataformat-xml @@ -52,14 +42,96 @@ ${xstream.version} - com.sun.xml.bind - jaxb-impl - ${jaxb.version} + org.apache.xmlgraphics + fop + ${fop.version} - org.apache.xmlbeans - xmlbeans - ${xmlbeans.version} + com.itextpdf + itextpdf + ${itextpdf.version} + + + org.jibx + jibx-run + ${jibx-version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + org.xmlunit + xmlunit-assertj + ${xmlunit-assertj.version} + test + + + org.jooq + joox-java-6 + ${joox.version} + + + + org.openjdk.jmh + jmh-core + ${jmh-core.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator.version} + + + jaxen + jaxen + ${jaxen.version} + + + org.freemarker + freemarker + ${freemarker.version} + + + jakarta.xml.bind + jakarta.xml.bind-api + ${jakarta.xml.bind-api.version} + + + com.github.spullara.mustache.java + compiler + ${mustache.version} + + + com.sun.xml.bind + jaxb-impl + ${jaxb-impl.version} + + + org.glassfish.jaxb + jaxb-runtime + ${jaxb-runtime.version} + + + com.sun.xml.bind + jaxb-core + ${jaxb-core.version} + + + net.htmlparser.jericho + jericho-html + ${jericho.version} + + + net.sourceforge.htmlcleaner + htmlcleaner + ${htmlcleaner.version} + + + org.jsoup + jsoup + ${jsoup.version} @@ -71,6 +143,14 @@ true + + + + org.jibx + maven-jibx-plugin + + + org.apache.maven.plugins @@ -79,18 +159,228 @@ org.apache.maven.plugins maven-surefire-plugin + ${maven-surefire-plugin.version} + + + org.jibx + maven-jibx-plugin + ${maven-jibx-plugin.version} + + src/main/resources + + *-binding.xml + + + template-binding.xml + + src/main/resources + + *-binding.xml + + true + + + + process-classes + process-classes + + bind + + + + process-test-classes + process-test-classes + + test-bind + + + + + + org.apache.bcel + bcel + ${bcel.version} + + + + + schemaGen + + + + org.jibx + maven-jibx-plugin + ${maven-jibx-plugin.version} + + + generate-java-code-from-schema + + schema-codegen + + + src/main/resources + + Order.xsd + + true + + + + compile-binding + + bind + + + target/generated-sources + true + true + + true + + + + generate-test-code-from-schema + generate-test-sources + + test-schema-codegen + + + + compile-test-binding + process-test-classes + + test-bind + + + target/generated-test-sources + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + CustomerTest.java + + + + + + + + bindGen + + + + + org.jibx + maven-jibx-plugin + + + + + + org.jibx + maven-jibx-plugin + ${maven-jibx-plugin.version} + + src/main/resources + + *-binding.xml + + + template-binding.xml + + src/main/resources + + *-binding.xml + + true + + + + process-classes + process-classes + + bind + + + + process-test-classes + process-test-classes + + test-bind + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + + maven-assembly-plugin + + ${project.basedir} + + + jar-with-dependencies + + + + + + com.baeldung.xml.jibx.JiBXDemoApplication + + + + + + + make-assembly + package + + attached + + + + + + + + + 2.1.3 - 20240303 1.89 1.4.18 - 2.3.3 - 5.0.2 - 2.12.4 + 2.9 + 5.5.13.3 + 1.2.4.5 + 6.7.0 + 1.3.1 + 3.14.0 + 2.6.3 + 1.6.2 + 1.2.0 + 2.3.29 + 4.0.2 + 0.9.6 + 2.3.0.1 + 4.0.4 + 4.0.3 + 3.4 + 2.25 + 1.17.2 diff --git a/xml-2/src/main/java/com/baeldung/xml/prettyprint/XmlPrettyPrinter.java b/xml-2/src/main/java/com/baeldung/xml/prettyprint/XmlPrettyPrinter.java deleted file mode 100644 index 85fd751325..0000000000 --- a/xml-2/src/main/java/com/baeldung/xml/prettyprint/XmlPrettyPrinter.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.baeldung.xml.prettyprint; - -import org.dom4j.DocumentHelper; -import org.dom4j.io.OutputFormat; -import org.dom4j.io.XMLWriter; -import org.w3c.dom.Document; -import org.xml.sax.InputSource; - -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; -import java.io.*; - -public class XmlPrettyPrinter { - - public static String prettyPrintByTransformer(String xmlString, int indent, boolean ignoreDeclaration) { - - try { - final InputSource src = new InputSource(new StringReader(xmlString)); - final Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(src); - - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - transformerFactory.setAttribute("indent-number", indent); - Transformer transformer = transformerFactory.newTransformer(new StreamSource(new StringReader(readPrettyPrintXslt()))); - // Using the default transformer will create empty lines in Java9+ -// Transformer transformer = transformerFactory.newTransformer(); - transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, ignoreDeclaration ? "yes" : "no"); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); - // Alternatively, we can set indent-size on the transformer object - // transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", String.valueOf(indent)); - Writer out = new StringWriter(); - transformer.transform(new DOMSource(document), new StreamResult(out)); - return out.toString(); - } catch (Exception e) { - throw new RuntimeException("Error occurs when pretty-printing xml:\n" + xmlString, e); - } - } - - - public static String prettyPrintByDom4j(String xmlString, int indent, boolean skipDeclaration) { - try { - final OutputFormat format = OutputFormat.createPrettyPrint(); - format.setEncoding("UTF-8"); - format.setIndentSize(indent); - format.setSuppressDeclaration(skipDeclaration); - - final org.dom4j.Document document = DocumentHelper.parseText(xmlString); - final StringWriter sw = new StringWriter(); - final XMLWriter writer = new XMLWriter(sw, format); - writer.write(document); - return sw.toString(); - } catch (Exception e) { - throw new RuntimeException("Error occurs when pretty-printing xml:\n" + xmlString, e); - } - } - - public static void main(String[] args) throws IOException { - InputStream inputStream = XmlPrettyPrinter.class.getResourceAsStream("/xml/emails.xml"); - String xmlString = readFromInputStream(inputStream); - System.out.println("Pretty printing by Transformer"); - System.out.println("============================================="); - System.out.println(prettyPrintByTransformer(xmlString, 2, true)); - System.out.println("============================================="); - System.out.println("Pretty printing by Dom4j"); - System.out.println("============================================="); - System.out.println(prettyPrintByDom4j(xmlString, 8, false)); - System.out.println("============================================="); - } - - - private static String readPrettyPrintXslt() throws IOException { - InputStream inputStream = XmlPrettyPrinter.class.getResourceAsStream("/xml/prettyprint.xsl"); - return readFromInputStream(inputStream); - } - - private static String readFromInputStream(InputStream inputStream) throws IOException { - StringBuilder resultStringBuilder = new StringBuilder(); - try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { - String line; - while ((line = br.readLine()) != null) { - resultStringBuilder.append(line).append("\n"); - } - } - return resultStringBuilder.toString(); - } -} diff --git a/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java b/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java index d2f2276e5c..8dcc27495f 100644 --- a/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java +++ b/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java @@ -1,9 +1,10 @@ package com.baeldung.xml.tohashmap; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlRootElement; + import java.util.List; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "employees") public class Employees { diff --git a/xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java b/xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java index ec651486ac..7dfef234fb 100644 --- a/xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java +++ b/xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java @@ -9,9 +9,6 @@ import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -21,6 +18,9 @@ import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Unmarshaller; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; diff --git a/xml-2/src/main/java/com/baeldung/xml/validation/XmlErrorHandler.java b/xml-2/src/main/java/com/baeldung/xml/validation/XmlErrorHandler.java deleted file mode 100644 index 2a4651a029..0000000000 --- a/xml-2/src/main/java/com/baeldung/xml/validation/XmlErrorHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.baeldung.xml.validation; - -import org.xml.sax.ErrorHandler; -import org.xml.sax.SAXParseException; - -import java.util.ArrayList; -import java.util.List; - -public class XmlErrorHandler implements ErrorHandler { - - private List exceptions; - - public XmlErrorHandler() { - this.exceptions = new ArrayList<>(); - } - - public List getExceptions() { - return exceptions; - } - - @Override - public void warning(SAXParseException exception) { - exceptions.add(exception); - } - - @Override - public void error(SAXParseException exception) { - exceptions.add(exception); - } - - @Override - public void fatalError(SAXParseException exception) { - exceptions.add(exception); - } -} diff --git a/xml-2/src/main/java/com/baeldung/xml/validation/XmlValidator.java b/xml-2/src/main/java/com/baeldung/xml/validation/XmlValidator.java deleted file mode 100644 index 57eccab193..0000000000 --- a/xml-2/src/main/java/com/baeldung/xml/validation/XmlValidator.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.baeldung.xml.validation; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; - -import javax.xml.XMLConstants; -import javax.xml.transform.Source; -import javax.xml.transform.stream.StreamSource; -import javax.xml.validation.Schema; -import javax.xml.validation.SchemaFactory; -import javax.xml.validation.Validator; -import java.io.File; -import java.io.IOException; -import java.util.List; - -public class XmlValidator { - - private static final Logger LOGGER = LoggerFactory.getLogger(XmlValidator.class); - - private String xsdPath; - private String xmlPath; - - public XmlValidator(String xsdPath, String xmlPath) { - this.xsdPath = xsdPath; - this.xmlPath = xmlPath; - } - - public boolean isValid() throws IOException, SAXException { - Validator validator = initValidator(xsdPath); - try { - validator.validate(new StreamSource(getFile(xmlPath))); - return true; - } catch (SAXException e) { - return false; - } - } - - public List listParsingExceptions() throws IOException, SAXException { - XmlErrorHandler xsdErrorHandler = new XmlErrorHandler(); - Validator validator = initValidator(xsdPath); - validator.setErrorHandler(xsdErrorHandler); - try { - validator.validate(new StreamSource(getFile(xmlPath))); - } catch (SAXParseException e) {} - xsdErrorHandler.getExceptions().forEach(e -> LOGGER.info(String.format("Line number: %s, Column number: %s. %s", e.getLineNumber(), e.getColumnNumber(), e.getMessage()))); - return xsdErrorHandler.getExceptions(); - } - - private Validator initValidator(String xsdPath) throws SAXException { - SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); - Source schemaFile = new StreamSource(getFile(xsdPath)); - Schema schema = factory.newSchema(schemaFile); - return schema.newValidator(); - } - - private File getFile(String location) { - return new File(getClass().getClassLoader().getResource(location).getFile()); - } - -} diff --git a/xml-2/src/main/resources/xml/prettyprint.xsl b/xml-2/src/main/resources/xml/prettyprint.xsl deleted file mode 100644 index 3941269f40..0000000000 --- a/xml-2/src/main/resources/xml/prettyprint.xsl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/xml-2/src/main/resources/xml/validation/baeldung.xml b/xml-2/src/main/resources/xml/validation/baeldung.xml deleted file mode 100644 index 31ae4b4aa6..0000000000 --- a/xml-2/src/main/resources/xml/validation/baeldung.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - Baeldung -
- 00001 - New York -
-
\ No newline at end of file diff --git a/xml-2/src/main/resources/xml/validation/full-person.xsd b/xml-2/src/main/resources/xml/validation/full-person.xsd deleted file mode 100644 index ea268c3a47..0000000000 --- a/xml-2/src/main/resources/xml/validation/full-person.xsd +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/xml-2/src/main/resources/xml/validation/person.xsd b/xml-2/src/main/resources/xml/validation/person.xsd deleted file mode 100644 index 22c41b6a22..0000000000 --- a/xml-2/src/main/resources/xml/validation/person.xsd +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java new file mode 100644 index 0000000000..fba6d83d4f --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java @@ -0,0 +1,51 @@ +package com.baeldung.xml; + +import org.apache.commons.io.FileUtils; +import org.junit.After; +import org.junit.Test; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import java.io.File; + +public class XMLDocumentWriterUnitTest { + + @Test + public void givenXMLDocumentWhenWriteIsCalledThenXMLIsWrittenToFile() throws Exception { + Document document = createSampleDocument(); + new XMLDocumentWriter().write(document, "company_simple.xml", false, false); + } + + @Test + public void givenXMLDocumentWhenWriteIsCalledWithPrettyPrintThenFormattedXMLIsWrittenToFile() throws Exception { + Document document = createSampleDocument(); + new XMLDocumentWriter().write(document, "company_prettyprinted.xml", false, true); + } + + private Document createSampleDocument() throws ParserConfigurationException { + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + Document document = documentBuilder.newDocument(); + Element companyElement = document.createElement("Company"); + document.appendChild(companyElement); + Element departmentElement = document.createElement("Department"); + departmentElement.setAttribute("name", "Sales"); + companyElement.appendChild(departmentElement); + Element employee1 = document.createElement("Employee"); + employee1.setAttribute("name", "John Smith"); + departmentElement.appendChild(employee1); + Element employee2 = document.createElement("Employee"); + employee2.setAttribute("name", "Tim Dellor"); + departmentElement.appendChild(employee2); + return document; + } + + @After + public void cleanUp() throws Exception { + FileUtils.deleteQuietly(new File("company_simple.xml")); + FileUtils.deleteQuietly(new File("company_prettyprinted.xml")); + } +} diff --git a/xml-2/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java deleted file mode 100644 index 275a734b28..0000000000 --- a/xml-2/src/test/java/com/baeldung/xml/json2xml/JsonToXmlUnitTest.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.baeldung.xml.json2xml; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.dataformat.xml.XmlMapper; -import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator; -import com.github.underscore.U; -import org.json.JSONObject; -import org.json.XML; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -public class JsonToXmlUnitTest { - - @Test - public void givenJsonString_whenConvertToXMLUsingJsonJava_thenConverted() { - String jsonString = "{\"name\":\"John\", \"age\":20, \"address\":{\"street\":\"Wall Street\", \"city\":\"New York\"}}"; - JSONObject jsonObject = new JSONObject(jsonString); - String xmlString = XML.toString(jsonObject); - Assertions.assertEquals("
New YorkWall Street
John20", xmlString); - } - - @Test - public void givenJsonString_whenConvertToXMLUsingJackson_thenConverted() throws JsonProcessingException { - String jsonString = "{\"name\":\"John\", \"age\":20, \"address\":{\"street\":\"Wall Street\", \"city\":\"New York\"}}"; - ObjectMapper objectMapper = new ObjectMapper(); - JsonNode jsonNode = objectMapper.readTree(jsonString); - String xmlString = new XmlMapper().writeValueAsString(jsonNode); - Assertions.assertEquals("John20
Wall StreetNew York
", xmlString); - } - - @Test - public void givenJsonString_whenConvertToXMLUsingJacksonWithXMLDeclarationAndRoot_thenConverted() throws JsonProcessingException { - String jsonString = "{\"name\":\"John\", \"age\":20, \"address\":{\"street\":\"Wall Street\", \"city\":\"New York\"}}"; - ObjectMapper objectMapper = new ObjectMapper(); - JsonNode jsonNode = objectMapper.readTree(jsonString); - XmlMapper xmlMapper = new XmlMapper(); - xmlMapper.configure(SerializationFeature.INDENT_OUTPUT, true); - xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true); - xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_1_1, true); - String xmlString = xmlMapper.writer().withRootName("root").withDefaultPrettyPrinter().writeValueAsString(jsonNode); - Assertions.assertEquals("" + System.lineSeparator() + - "" + System.lineSeparator() + - " John" + System.lineSeparator() + - " 20" + System.lineSeparator() + - "
" + System.lineSeparator() + - " Wall Street" + System.lineSeparator() + - " New York" + System.lineSeparator() + - "
" + System.lineSeparator() + - "
" + System.lineSeparator(), xmlString); - } - - @Test - public void givenJsonString_whenConvertToXMLUsingUnderscoreJava_thenConverted() { - String jsonString = "{\"name\":\"John\", \"age\":20}"; - String xmlString = U.jsonToXml(jsonString); - Assertions.assertEquals("\n" + - "\n" + - " John\n" + - " 20\n" + - "", xmlString); - } - - @Test - public void givenJsonString_whenConvertToXMLUsingUnderscoreJavaWithoutAttributes_thenConverted() { - String jsonString = "{\"name\":\"John\", \"age\":20}"; - String xmlString = U.jsonToXml(jsonString, U.JsonToXmlMode.REMOVE_ATTRIBUTES); - Assertions.assertEquals("\n" + - "\n" + - " John\n" + - " 20\n" + - "", xmlString); - } -} - diff --git a/xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java index 5e05dd3ccb..437489f5e7 100644 --- a/xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java +++ b/xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java @@ -6,8 +6,7 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Map; -import javax.xml.bind.JAXBException; - +import jakarta.xml.bind.JAXBException; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/xml-2/src/test/java/com/baeldung/xml/validation/XmlValidatorUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/validation/XmlValidatorUnitTest.java deleted file mode 100644 index 2eb20a9bf2..0000000000 --- a/xml-2/src/test/java/com/baeldung/xml/validation/XmlValidatorUnitTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.baeldung.xml.validation; - -import org.junit.jupiter.api.Test; -import org.xml.sax.SAXException; -import java.io.IOException; - -import static org.junit.jupiter.api.Assertions.*; - -class XmlValidatorUnitTest { - - private static final String BAELDUNG_XML_PATH = "xml/validation/baeldung.xml"; - private static final String PERSON_XSD_PATH = "xml/validation/person.xsd"; - private static final String FULL_PERSON_XSD_PATH = "xml/validation/full-person.xsd"; - - @Test - public void givenValidXML_WhenIsValid_ThenTrue() throws IOException, SAXException { - assertTrue(new XmlValidator(PERSON_XSD_PATH, BAELDUNG_XML_PATH).isValid()); - } - - @Test - public void givenInvalidXML_WhenIsValid_ThenFalse() throws IOException, SAXException { - assertFalse(new XmlValidator(FULL_PERSON_XSD_PATH, BAELDUNG_XML_PATH).isValid()); - } - - @Test - public void givenValidXML_WhenListParsingExceptions_ThenNone() throws IOException, SAXException { - assertEquals(0, new XmlValidator(PERSON_XSD_PATH, BAELDUNG_XML_PATH).listParsingExceptions().size()); - } - - @Test - public void givenInvalidXML_WhenListParsingExceptions_ThenHasThree() throws IOException, SAXException { - assertEquals(3, new XmlValidator(FULL_PERSON_XSD_PATH, BAELDUNG_XML_PATH).listParsingExceptions().size()); - } - -} diff --git a/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java index f573e1c96d..9d658b2152 100644 --- a/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java +++ b/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.xml2document; +package com.baeldung.xml.xml2document; import org.junit.Test; import org.w3c.dom.*; diff --git a/xml-2/src/test/java/com/baeldung/xml/xml2string/XMLObjectToStringUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/xml2string/XMLObjectToStringUnitTest.java deleted file mode 100644 index 0afa3424f3..0000000000 --- a/xml-2/src/test/java/com/baeldung/xml/xml2string/XMLObjectToStringUnitTest.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.baeldung.xml2string; - -import org.apache.xmlbeans.XmlException; -import org.apache.xmlbeans.XmlObject; -import org.apache.xmlbeans.XmlOptions; -import org.junit.Test; -import org.junit.Before; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import java.io.StringWriter; - -import static org.junit.Assert.assertTrue; - -public class XMLObjectToStringUnitTest { - private Document document; - - @Before - public void setup() throws ParserConfigurationException { -// Create a DocumentBuilder - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - -// Create a new Document - document = builder.newDocument(); - -// Create the root element - Element rootElement = document.createElement("root"); - document.appendChild(rootElement); - -// Create child elements - Element childElement1 = document.createElement("child1"); - Element childElement2 = document.createElement("child2"); - -// Add text content to the child elements - childElement1.appendChild(document.createTextNode("This is child element 1")); - childElement2.appendChild(document.createTextNode("This is child element 2")); - -// Append child elements to the root element - rootElement.appendChild(childElement1); - rootElement.appendChild(childElement2); - } - - @Test - public void givenXMLDocument_whenUsingTransformer_thenConvertXMLToString() throws TransformerException { - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - StringWriter stringWriter = new StringWriter(); - transformer.transform(new DOMSource(document), new StreamResult(stringWriter)); - String result = stringWriter.toString(); - - assertTrue(result.contains("")); - assertTrue(result.contains("This is child element 1")); - assertTrue(result.contains("This is child element 2")); - } - - @Test - public void givenXMLDocument_whenUsingXmlBeans_thenConvertXMLToString() { - try { - - XmlObject xmlObject = XmlObject.Factory.parse(document); - - XmlOptions options = new XmlOptions(); - options.setSavePrettyPrint(); - options.setUseDefaultNamespace(); - options.setSaveAggressiveNamespaces(); - - String xmlString = xmlObject.xmlText(options); - - xmlString = "" + xmlString; - - assertTrue(xmlString.contains("")); - assertTrue(xmlString.contains("This is child element 1")); - assertTrue(xmlString.contains("This is child element 2")); - } catch (XmlException e) { - e.printStackTrace(); - } - } -} diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java b/xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java new file mode 100644 index 0000000000..b05123cbdc --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java @@ -0,0 +1,61 @@ +package com.baeldung.xmlhtml.delhtmltags; + +import net.htmlparser.jericho.Renderer; +import net.htmlparser.jericho.Segment; +import net.htmlparser.jericho.Source; +import org.htmlcleaner.CleanerProperties; +import org.htmlcleaner.HtmlCleaner; +import org.jsoup.Jsoup; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +class RemoveHtmlTagsLiveTest { + + @Test + void givenHtml1_whenRemoveTagsByRegex_thenPrintText() throws IOException, URISyntaxException { + String html = new String(Files.readAllBytes( + (Paths.get(getClass().getResource("/xmlhtml/delhtmltags/example1.html").toURI())))); + String result = html.replaceAll("<[^>]*>", "") + .replaceAll("(?m)^\\s*$", ""); // remove empty and blank lines + System.out.println(result); + } + + @Test + void givenHtml2_whenRemoveTagsByRegex_thenPrintText() throws IOException, URISyntaxException { + String html = new String(Files.readAllBytes( + (Paths.get(getClass().getResource("/xmlhtml/delhtmltags/example2.html").toURI())))); + String result = html.replaceAll("<[^>]*>", ""); + System.out.println(result); + } + + @Test + void givenHtml2_whenRemoveTagsByJsoup_thenPrintText() throws IOException, URISyntaxException { + String html = new String(Files.readAllBytes( + (Paths.get(getClass().getResource("/xmlhtml/delhtmltags/example2.html").toURI())))); + System.out.println(Jsoup.parse(html).text()); + } + + @Test + void givenHtml2_whenRemoveTagsByHtmlCleaner_thenPrintText() throws IOException, URISyntaxException { + String html = new String(Files.readAllBytes( + (Paths.get(getClass().getResource("/xmlhtml/delhtmltags/example2.html").toURI())))); + CleanerProperties props = new CleanerProperties(); + props.setPruneTags("script"); + String result = new HtmlCleaner(props).clean(html).getText().toString(); + System.out.println(result); + } + + @Test + void givenHtml2_whenRemoveTagsByJericho_thenPrintText() throws IOException, URISyntaxException { + String html = new String(Files.readAllBytes( + (Paths.get(getClass().getResource("/xmlhtml/delhtmltags/example2.html").toURI())))); + Source htmlSource = new Source(html); + Segment segment = new Segment(htmlSource, 0, htmlSource.length()); + Renderer htmlRender = new Renderer(segment).setIncludeHyperlinkURLs(true); + System.out.println(htmlRender); + } +} diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java b/xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java new file mode 100644 index 0000000000..c110f88e99 --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.xmlhtml.freemarker; + +import com.baeldung.xmlhtml.stax.StaxTransformer; +import freemarker.template.TemplateException; +import org.junit.jupiter.api.Test; + +import javax.xml.stream.XMLStreamException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThat; + +public class FreemarkerTransformerUnitTest { + + @Test + public void givenXml_whenTransform_thenGetHtml() throws IOException, URISyntaxException, XMLStreamException, TemplateException { + String expectedHtml = new String(Files.readAllBytes((Paths.get(getClass() + .getResource("/xmlhtml/notification.html") + .toURI())))); + StaxTransformer staxTransformer = new StaxTransformer("src/test/resources/xmlhtml/notification.xml"); + String templateFile = "freemarker.html"; + String templateDirectory = "src/test/resources/templates"; + FreemarkerTransformer transformer = new FreemarkerTransformer(staxTransformer, templateDirectory, templateFile); + + String result = transformer.html(); + + assertThat(result).isEqualTo(expectedHtml); + } + +} diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java b/xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java new file mode 100644 index 0000000000..02fc422ee9 --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.xmlhtml.jaxp; + +import org.junit.jupiter.api.Test; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThat; + +public class JaxpTransformerUnitTest { + + @Test + public void givenXml_whenTransform_thenGetHtml() throws IOException, SAXException, ParserConfigurationException, TransformerException, URISyntaxException { + String path = getClass() + .getResource("/xmlhtml/notification.xml") + .toString(); + String expectedHtml = new String(Files.readAllBytes((Paths.get(getClass() + .getResource("/xmlhtml/notification.html") + .toURI())))); + JaxpTransformer transformer = new JaxpTransformer(path); + + String result = transformer + .html() + .replaceAll("(?m)^\\s+", "");//Delete extra spaces added by Java 11 + + assertThat(result).isEqualTo(expectedHtml); + } +} diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java b/xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java new file mode 100644 index 0000000000..b53a23d4fb --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.xmlhtml.mustache; + +import com.baeldung.xmlhtml.stax.StaxTransformer; +import org.junit.jupiter.api.Test; + +import javax.xml.stream.XMLStreamException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThat; + +public class MustacheTransformerUnitTest { + + @Test + public void givenXml_whenTransform_thenGetHtml() throws IOException, URISyntaxException, XMLStreamException { + String expectedHtml = new String(Files.readAllBytes((Paths.get(getClass() + .getResource("/xmlhtml/notification.html") + .toURI())))); + StaxTransformer staxTransformer = new StaxTransformer("src/test/resources/xmlhtml/notification.xml"); + String templateFile = "src/test/resources/templates/template.mustache"; + MustacheTransformer transformer = new MustacheTransformer(staxTransformer, templateFile); + + String result = transformer.html(); + + assertThat(result).isEqualTo(expectedHtml); + } + +} diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java b/xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java new file mode 100644 index 0000000000..efb2edc7a3 --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.xmlhtml.stax; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import javax.xml.stream.XMLStreamException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThat; + +public class StaxTransformerUnitTest { + + @Disabled // JAVA-39223 + @Test + public void givenXml_whenTransform_thenGetHtml() throws IOException, URISyntaxException, XMLStreamException { + String path = "src/test/resources/xmlhtml/notification.xml"; + String expectedHtml = new String(Files.readAllBytes((Paths.get(getClass() + .getResource("/xmlhtml/notification.html") + .toURI())))); + StaxTransformer transformer = new StaxTransformer(path); + + String result = transformer.html(); + + assertThat(result).isEqualTo(expectedHtml); + } + +} diff --git a/xml-2/src/test/resources/Customer1.xml b/xml-2/src/test/resources/Customer1.xml new file mode 100644 index 0000000000..7f4fbc79af --- /dev/null +++ b/xml-2/src/test/resources/Customer1.xml @@ -0,0 +1,16 @@ + + + + 12345 + Stefan Jaeger + + + 234678 + + + + 234678 + + Davos Dorf + + \ No newline at end of file diff --git a/xml-2/src/test/resources/templates/freemarker.html b/xml-2/src/test/resources/templates/freemarker.html new file mode 100644 index 0000000000..15ec7f9fff --- /dev/null +++ b/xml-2/src/test/resources/templates/freemarker.html @@ -0,0 +1,11 @@ + + + + +${heading} + + +

${from}

+

${content}

+ + diff --git a/xml-2/src/test/resources/templates/template.mustache b/xml-2/src/test/resources/templates/template.mustache new file mode 100644 index 0000000000..8c209843e1 --- /dev/null +++ b/xml-2/src/test/resources/templates/template.mustache @@ -0,0 +1,11 @@ + + + + +{{heading}} + + +

{{from}}

+

{{content}}

+ + diff --git a/xml-2/src/test/resources/xml/attribute.xml b/xml-2/src/test/resources/xml/attribute.xml new file mode 100644 index 0000000000..c8fa3f1071 --- /dev/null +++ b/xml-2/src/test/resources/xml/attribute.xml @@ -0,0 +1,5 @@ + + + john@email.com + mary@email.com + \ No newline at end of file diff --git a/xml-2/src/test/resources/xml/attribute_expected.xml b/xml-2/src/test/resources/xml/attribute_expected.xml new file mode 100644 index 0000000000..1d5d7b0cea --- /dev/null +++ b/xml-2/src/test/resources/xml/attribute_expected.xml @@ -0,0 +1,5 @@ + + + john@email.com + mary@email.com + \ No newline at end of file diff --git a/xml-2/src/test/resources/xml/xee_attribute.xml b/xml-2/src/test/resources/xml/xee_attribute.xml new file mode 100644 index 0000000000..2e98df076b --- /dev/null +++ b/xml-2/src/test/resources/xml/xee_attribute.xml @@ -0,0 +1,9 @@ + + ]> + + &xxe; + + john@email.com + mary@email.com + \ No newline at end of file diff --git a/xml-2/src/test/resources/xmlhtml/delhtmltags/example1.html b/xml-2/src/test/resources/xmlhtml/delhtmltags/example1.html new file mode 100644 index 0000000000..43f3a22ef4 --- /dev/null +++ b/xml-2/src/test/resources/xmlhtml/delhtmltags/example1.html @@ -0,0 +1,15 @@ + + + + This is the page title + + +

+ If the application X doesn't start, the possible causes could be:
+ 1. Maven is not installed.
+ 2. Not enough disk space.
+ 3. Not enough memory. +

+ + \ No newline at end of file diff --git a/xml-2/src/test/resources/xmlhtml/delhtmltags/example2.html b/xml-2/src/test/resources/xmlhtml/delhtmltags/example2.html new file mode 100644 index 0000000000..532eadc101 --- /dev/null +++ b/xml-2/src/test/resources/xmlhtml/delhtmltags/example2.html @@ -0,0 +1,22 @@ + + + + This is the page title + + + +

+ If the application X doesn't start, the possible causes could be:
+ 1. + Maven + is not installed.
+ 2. Not enough (<1G) disk space.
+ 3. Not enough (<64MB) memory.
+

+ + \ No newline at end of file diff --git a/xml-2/src/test/resources/xmlhtml/notification.html b/xml-2/src/test/resources/xmlhtml/notification.html new file mode 100644 index 0000000000..4a0ef09c5d --- /dev/null +++ b/xml-2/src/test/resources/xmlhtml/notification.html @@ -0,0 +1,11 @@ + + + + +Build #7 passed + + +

from: builds@baeldung.com

+

Success: The Jenkins CI build passed

+ + diff --git a/xml-2/src/test/resources/xmlhtml/notification.xml b/xml-2/src/test/resources/xmlhtml/notification.xml new file mode 100644 index 0000000000..c3550d6f04 --- /dev/null +++ b/xml-2/src/test/resources/xmlhtml/notification.xml @@ -0,0 +1,6 @@ + + + builds@baeldung.com + Build #7 passed + Success: The Jenkins CI build passed + \ No newline at end of file From e7c98a942913263d19c5a562f2454769c7ced3d3 Mon Sep 17 00:00:00 2001 From: YuCheng Hu Date: Tue, 29 Apr 2025 18:13:27 -0400 Subject: [PATCH 2/3] Merge from remote --- .../com/baeldung/xml/XMLDocumentWriter.java | 36 ++++++ .../xml/attribute/Dom4jTransformer.java | 49 +++++++++ .../xml/attribute/JaxpTransformer.java | 60 ++++++++++ .../xml/attribute/JooxTransformer.java | 38 +++++++ .../xml/attribute/jmh/AttributeBenchMark.java | 71 ++++++++++++ .../java/com/baeldung/xml/jibx/Customer.java | 53 +++++++++ .../java/com/baeldung/xml/jibx/Identity.java | 14 +++ .../java/com/baeldung/xml/jibx/Person.java | 25 +++++ .../java/com/baeldung/xml/jibx/Phone.java | 14 +++ .../xml/xml2pdf/XmlToPdfConverter.java | 55 ++++++++++ .../com/baeldung/xmlhtml/Application.java | 10 ++ .../java/com/baeldung/xmlhtml/Constants.java | 22 ++++ .../freemarker/FreemarkerTransformer.java | 40 +++++++ .../baeldung/xmlhtml/helpers/XMLRunner.java | 11 ++ .../xmlhtml/helpers/jaxb/JAXBHelper.java | 76 +++++++++++++ .../xmlhtml/jaxp/JaxpTransformer.java | 103 ++++++++++++++++++ .../xmlhtml/mustache/MustacheTransformer.java | 30 +++++ .../xmlhtml/pojo/jaxb/html/ExampleHTML.java | 38 +++++++ .../xmlhtml/pojo/jaxb/html/elements/Body.java | 29 +++++ .../jaxb/html/elements/CustomElement.java | 18 +++ .../xmlhtml/pojo/jaxb/html/elements/Meta.java | 30 +++++ .../jaxb/html/elements/NestedElement.java | 17 +++ .../xmlhtml/pojo/jaxb/xml/XMLExample.java | 20 ++++ .../pojo/jaxb/xml/elements/Ancestor.java | 28 +++++ .../pojo/jaxb/xml/elements/DescendantOne.java | 19 ++++ .../jaxb/xml/elements/DescendantThree.java | 18 +++ .../pojo/jaxb/xml/elements/DescendantTwo.java | 17 +++ .../xmlhtml/stax/StaxTransformer.java | 99 +++++++++++++++++ xml-2/src/main/resources/customer-binding.xml | 26 +++++ xml-2/src/main/resources/xml/attribute.xml | 5 + .../main/resources/xml/attribute_expected.xml | 5 + xml-2/src/main/resources/xml/in.xml | 11 ++ xml-2/src/main/resources/xml/jaxb.html | 14 +++ xml-2/src/main/resources/xml/jaxp.html | 13 +++ xml-2/src/main/resources/xml/stax.html | 15 +++ .../main/resources/xmltopdf/data-input.xml | 26 +++++ xml-2/src/main/resources/xmltopdf/style.xsl | 75 +++++++++++++ .../xml/attribute/Dom4jProcessorUnitTest.java | 69 ++++++++++++ .../xml/attribute/JaxpProcessorUnitTest.java | 47 ++++++++ .../xml/attribute/JooxProcessorUnitTest.java | 69 ++++++++++++ .../baeldung/xml/jibx/CustomerUnitTest.java | 52 +++++++++ .../xml2pdf/XmlToPdfConverterUnitTest.java | 47 ++++++++ 42 files changed, 1514 insertions(+) create mode 100644 xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java create mode 100644 xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java create mode 100644 xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java create mode 100644 xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java create mode 100644 xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java create mode 100644 xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java create mode 100644 xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java create mode 100644 xml-2/src/main/java/com/baeldung/xml/jibx/Person.java create mode 100644 xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java create mode 100644 xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/Application.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java create mode 100644 xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java create mode 100644 xml-2/src/main/resources/customer-binding.xml create mode 100644 xml-2/src/main/resources/xml/attribute.xml create mode 100644 xml-2/src/main/resources/xml/attribute_expected.xml create mode 100644 xml-2/src/main/resources/xml/in.xml create mode 100644 xml-2/src/main/resources/xml/jaxb.html create mode 100644 xml-2/src/main/resources/xml/jaxp.html create mode 100644 xml-2/src/main/resources/xml/stax.html create mode 100644 xml-2/src/main/resources/xmltopdf/data-input.xml create mode 100644 xml-2/src/main/resources/xmltopdf/style.xsl create mode 100644 xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java create mode 100644 xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java create mode 100644 xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java create mode 100644 xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java create mode 100644 xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java diff --git a/xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java b/xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java new file mode 100644 index 0000000000..7dc9872d2b --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java @@ -0,0 +1,36 @@ +package com.baeldung.xml; + +import org.w3c.dom.Document; + +import javax.xml.transform.*; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +public class XMLDocumentWriter { + + public void write(Document document, String fileName, boolean excludeDeclaration, boolean prettyPrint) { + try(FileWriter writer = new FileWriter(new File(fileName))) { + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + if(excludeDeclaration) { + transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); + } + if(prettyPrint) { + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); + } + DOMSource source = new DOMSource(document); + StreamResult result = new StreamResult(writer); + transformer.transform(source, result); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } catch (TransformerConfigurationException e) { + throw new IllegalStateException(e); + } catch (TransformerException e) { + throw new IllegalArgumentException(e); + } + } +} diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java b/xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java new file mode 100644 index 0000000000..631cf80cb0 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java @@ -0,0 +1,49 @@ +package com.baeldung.xml.attribute; + +import org.dom4j.*; +import org.dom4j.io.DocumentSource; +import org.dom4j.io.SAXReader; +import org.xml.sax.SAXException; + +import javax.xml.XMLConstants; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import java.io.StringWriter; +import java.io.Writer; +import java.util.List; + +public class Dom4jTransformer { + private final Document input; + + public Dom4jTransformer(String resourcePath) throws DocumentException, SAXException { + // 1- Build the doc from the XML file + SAXReader xmlReader = new SAXReader(); + xmlReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + xmlReader.setFeature("http://xml.org/sax/features/external-general-entities", false); + xmlReader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + this.input = xmlReader.read(resourcePath); + } + + public String modifyAttribute(String attribute, String oldValue, String newValue) throws TransformerException, TransformerException { + // 2- Locate the node(s) with xpath, we can use index and iterator too. + String expr = String.format("//*[contains(@%s, '%s')]", attribute, oldValue); + XPath xpath = DocumentHelper.createXPath(expr); + List nodes = xpath.selectNodes(input); + // 3- Make the change on the selected nodes + for (int i = 0; i < nodes.size(); i++) { + Element element = (Element) nodes.get(i); + element.addAttribute(attribute, newValue); + } + // 4- Save the result to a new XML doc + TransformerFactory factory = TransformerFactory.newInstance(); + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + Transformer xformer = factory.newTransformer(); + xformer.setOutputProperty(OutputKeys.INDENT, "yes"); + Writer output = new StringWriter(); + xformer.transform(new DocumentSource(input), new StreamResult(output)); + return output.toString(); + } +} diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java b/xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java new file mode 100644 index 0000000000..ef2f9dc822 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java @@ -0,0 +1,60 @@ +package com.baeldung.xml.attribute; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.*; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; + +public class JaxpTransformer { + + private Document input; + + public JaxpTransformer(String resourcePath) throws SAXException, IOException, ParserConfigurationException { + // 1- Build the doc from the XML file + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + this.input = factory.newDocumentBuilder() + .parse(resourcePath); + } + + public String modifyAttribute(String attribute, String oldValue, String newValue) + throws XPathExpressionException, TransformerFactoryConfigurationError, TransformerException, TransformerConfigurationException { + // 2- Locate the node(s) with xpath + XPath xpath = XPathFactory.newInstance() + .newXPath(); + NodeList nodes = (NodeList) xpath.evaluate(String.format("//*[contains(@%s, '%s')]", attribute, oldValue), this.input, XPathConstants.NODESET); + // 3- Make the change on the selected nodes + for (int i = 0; i < nodes.getLength(); i++) { + Element value = (Element) nodes.item(i); + value.setAttribute(attribute, newValue); + } + // Stream api syntax + // IntStream + // .range(0, nodes.getLength()) + // .mapToObj(i -> (Element) nodes.item(i)) + // .forEach(value -> value.setAttribute(attribute, newValue)); + // 4- Save the result to a new XML doc + TransformerFactory factory = TransformerFactory.newInstance(); + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + Transformer xformer = factory.newTransformer(); + xformer.setOutputProperty(OutputKeys.INDENT, "yes"); + Writer output = new StringWriter(); + xformer.transform(new DOMSource(this.input), new StreamResult(output)); + return output.toString(); + } +} diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java b/xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java new file mode 100644 index 0000000000..d36d60ec59 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java @@ -0,0 +1,38 @@ +package com.baeldung.xml.attribute; + +import org.joox.JOOX; +import org.joox.Match; +import org.w3c.dom.Document; +import org.xml.sax.SAXException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.transform.TransformerFactoryConfigurationError; +import java.io.IOException; + +import static org.joox.JOOX.$; + +public class JooxTransformer { + + private final Document input; + + public JooxTransformer(String resourcePath) throws SAXException, IOException { + // 1- Build the doc from the XML file + DocumentBuilder builder = JOOX.builder(); + input = builder.parse(resourcePath); + } + + public String modifyAttribute(String attribute, String oldValue, String newValue) throws TransformerFactoryConfigurationError { + // 2- Select the document + Match $ = $(input); + // 3 - Find node to modify + String expr = String.format("//*[contains(@%s, '%s')]", attribute, oldValue); + $ + // .find("to") or with xpath + .xpath(expr) + .get() + .stream() + .forEach(e -> e.setAttribute(attribute, newValue)); + // 4- Return result as String + return $.toString(); + } +} diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java b/xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java new file mode 100644 index 0000000000..849b6ef945 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java @@ -0,0 +1,71 @@ +package com.baeldung.xml.attribute.jmh; + +import com.baeldung.xml.attribute.Dom4jTransformer; +import com.baeldung.xml.attribute.JaxpTransformer; +import com.baeldung.xml.attribute.JooxTransformer; +import org.dom4j.DocumentException; +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.xpath.XPathExpressionException; +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +@State(Scope.Benchmark) +public class AttributeBenchMark { + + public static void main(String[] args) throws RunnerException { + Options opt = new OptionsBuilder().include(AttributeBenchMark.class.getSimpleName()) + .forks(1) + .build(); + new Runner(opt).run(); + } + + @Benchmark + public String dom4jBenchmark() throws DocumentException, TransformerException, SAXException { + String path = this.getClass() + .getResource("/xml/attribute.xml") + .toString(); + Dom4jTransformer transformer = new Dom4jTransformer(path); + String attribute = "customer"; + String oldValue = "true"; + String newValue = "false"; + + return transformer.modifyAttribute(attribute, oldValue, newValue); + } + + @Benchmark + public String jooxBenchmark() throws IOException, SAXException { + String path = this.getClass() + .getResource("/xml/attribute.xml") + .toString(); + JooxTransformer transformer = new JooxTransformer(path); + String attribute = "customer"; + String oldValue = "true"; + String newValue = "false"; + + return transformer.modifyAttribute(attribute, oldValue, newValue); + } + + @Benchmark + public String jaxpBenchmark() + throws TransformerException, ParserConfigurationException, SAXException, IOException, XPathExpressionException { + String path = this.getClass() + .getResource("/xml/attribute.xml") + .toString(); + JaxpTransformer transformer = new JaxpTransformer(path); + String attribute = "customer"; + String oldValue = "true"; + String newValue = "false"; + + return transformer.modifyAttribute(attribute, oldValue, newValue); + } +} diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java b/xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java new file mode 100644 index 0000000000..a660451080 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java @@ -0,0 +1,53 @@ +/* + * Customer.java 06.06.2008 + * + * Copyright 2008 Stefan Jäger + * + */ +package com.baeldung.xml.jibx; + +import org.apache.commons.lang3.builder.ToStringBuilder; + +public class Customer { + private Person person; + private String city; + + private Phone homePhone; + private Phone officePhone; + + public Person getPerson() { + return person; + } + + public void setPerson(Person person) { + this.person = person; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public Phone getHomePhone() { + return homePhone; + } + + public void setHomePhone(Phone homePhone) { + this.homePhone = homePhone; + } + + public Phone getOfficePhone() { + return officePhone; + } + + public void setOfficePhone(Phone officePhone) { + this.officePhone = officePhone; + } + + public String toString() { + return ToStringBuilder.reflectionToString(this); + } +} diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java b/xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java new file mode 100644 index 0000000000..15aab4e417 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java @@ -0,0 +1,14 @@ +package com.baeldung.xml.jibx; + +public class Identity { + + long customerId; + + public long getCustomerId() { + return customerId; + } + + public void setCustomerId(long customerId) { + this.customerId = customerId; + } +} diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Person.java b/xml-2/src/main/java/com/baeldung/xml/jibx/Person.java new file mode 100644 index 0000000000..43af659319 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xml/jibx/Person.java @@ -0,0 +1,25 @@ +/* + * Person.java 06.06.2008 + * + * Copyright 2008 Stefan Jäger + * + */ +package com.baeldung.xml.jibx; + +import org.apache.commons.lang3.builder.ToStringBuilder; + +public class Person extends Identity { + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String toString() { + return ToStringBuilder.reflectionToString(this); + } +} diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java b/xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java new file mode 100644 index 0000000000..783f2ee6fb --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java @@ -0,0 +1,14 @@ +package com.baeldung.xml.jibx; + +public class Phone { + + private String number; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } +} diff --git a/xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java b/xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java new file mode 100644 index 0000000000..c65080b106 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java @@ -0,0 +1,55 @@ +package com.baeldung.xml.xml2pdf; + +import com.itextpdf.text.Document; +import com.itextpdf.text.Paragraph; +import com.itextpdf.text.pdf.PdfWriter; +import org.apache.fop.apps.FOUserAgent; +import org.apache.fop.apps.Fop; +import org.apache.fop.apps.FopFactory; +import org.apache.fop.apps.MimeConstants; + +import javax.xml.transform.Result; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.sax.SAXResult; +import javax.xml.transform.stream.StreamSource; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Paths; + +public class XmlToPdfConverter { + + public static void convertXMLtoPDFUsingFop(String xmlFilePath, String xsltFilePath, String pdfFilePath) throws Exception { + // Initialize FOP + FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI()); + FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); + + // Specify output stream for PDF + try (OutputStream out = new BufferedOutputStream(Files.newOutputStream(new File(pdfFilePath).toPath()))) { + Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out); + // Create Transformer from XSLT + TransformerFactory factory = TransformerFactory.newInstance(); + Transformer transformer = factory.newTransformer(new StreamSource(new File(xsltFilePath))); + // Apply transformation + Source src = new StreamSource(new File(xmlFilePath)); + Result res = new SAXResult(fop.getDefaultHandler()); + transformer.transform(src, res); + } + } + + public static void convertXMLtoPDFUsingIText(String xmlFilePath, String pdfFilePath) throws Exception { + try (FileOutputStream outputStream = new FileOutputStream(pdfFilePath)) { + Document document = new Document(); + PdfWriter.getInstance(document, outputStream); + document.open(); + // Read XML content and add it to the Document + String xmlContent = new String(Files.readAllBytes(Paths.get(xmlFilePath))); + document.add(new Paragraph(xmlContent)); + document.close(); + } + } +} diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/Application.java b/xml-2/src/main/java/com/baeldung/xmlhtml/Application.java new file mode 100644 index 0000000000..063a833810 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/Application.java @@ -0,0 +1,10 @@ +package com.baeldung.xmlhtml; + +import com.baeldung.xmlhtml.helpers.XMLRunner; + +public class Application { + + public static void main(String[] args) { + XMLRunner.doWork(); + } +} diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java b/xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java new file mode 100644 index 0000000000..88fc5637df --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java @@ -0,0 +1,22 @@ +package com.baeldung.xmlhtml; + +public class Constants { + + public static final String XML_FILE_IN = "src/main/resources/xml/in.xml"; + public static final String JAXB_FILE_OUT = "src/main/resources/xml/jaxb.html"; + public static final String JAXP_FILE_OUT = "src/main/resources/xml/jaxp.html"; + public static final String STAX_FILE_OUT = "src/main/resources/xml/stax.html"; + + public static final String EXCEPTION_ENCOUNTERED = "Generic exception! Error: "; + + public static final String LINE_BREAK = System.getProperty("line.separator"); + public static final String WHITE_SPACE = " "; + + public static final String DOCUMENT_START = "Document parsing has begun!"; + public static final String DOCUMENT_END = "Document parsing has ended!"; + public static final String ELEMENT_START = "Element parsing has begun!"; + public static final String ELEMENT_END = "Element parsing has ended!"; + + public static final String BREAK = "\n"; + public static final String TAB = "\t"; +} diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java b/xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java new file mode 100644 index 0000000000..9e992699cc --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java @@ -0,0 +1,40 @@ +package com.baeldung.xmlhtml.freemarker; + +import com.baeldung.xmlhtml.stax.StaxTransformer; +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.TemplateException; +import freemarker.template.TemplateExceptionHandler; + +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.nio.charset.StandardCharsets; + +public class FreemarkerTransformer { + private StaxTransformer staxTransformer; + private String templateDirectory; + private String templateFile; + + public FreemarkerTransformer(StaxTransformer staxTransformer, String templateDirectory, String templateFile) { + this.staxTransformer = staxTransformer; + this.templateDirectory = templateDirectory; + this.templateFile = templateFile; + } + + public String html() throws IOException, TemplateException { + Configuration cfg = new Configuration(Configuration.VERSION_2_3_29); + cfg.setDirectoryForTemplateLoading(new File(templateDirectory)); + cfg.setDefaultEncoding(StandardCharsets.UTF_8.toString()); + cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); + cfg.setLogTemplateExceptions(false); + cfg.setWrapUncheckedExceptions(true); + cfg.setFallbackOnNullLoopVariable(false); + Template temp = cfg.getTemplate(templateFile); + try (Writer output = new StringWriter()) { + temp.process(staxTransformer.getMap(), output); + return output.toString(); + } + } +} diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java b/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java new file mode 100644 index 0000000000..f0fe308e38 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java @@ -0,0 +1,11 @@ +package com.baeldung.xmlhtml.helpers; + + +import com.baeldung.xmlhtml.helpers.jaxb.JAXBHelper; + +public class XMLRunner { + + public static void doWork() { + JAXBHelper.example(); + } +} diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java b/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java new file mode 100644 index 0000000000..740d5990b2 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java @@ -0,0 +1,76 @@ +package com.baeldung.xmlhtml.helpers.jaxb; + +import com.baeldung.xmlhtml.pojo.jaxb.html.ExampleHTML; +import com.baeldung.xmlhtml.pojo.jaxb.html.elements.Body; +import com.baeldung.xmlhtml.pojo.jaxb.html.elements.CustomElement; +import com.baeldung.xmlhtml.pojo.jaxb.html.elements.Meta; +import com.baeldung.xmlhtml.pojo.jaxb.html.elements.NestedElement; +import com.baeldung.xmlhtml.pojo.jaxb.xml.XMLExample; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.Marshaller; +import jakarta.xml.bind.Unmarshaller; + +import java.io.File; + +import static com.baeldung.xmlhtml.Constants.*; + +public class JAXBHelper { + + private static void print(String xmlContent) { + System.out.println(xmlContent); + } + + private static Unmarshaller getContextUnmarshaller(Class clazz) { + Unmarshaller unmarshaller = null; + try { + JAXBContext context = JAXBContext.newInstance(clazz); + unmarshaller = context.createUnmarshaller(); + } catch (Exception ex) { + System.out.println(EXCEPTION_ENCOUNTERED + ex); + } + return unmarshaller; + } + + private static Marshaller getContextMarshaller(Class clazz) { + Marshaller marshaller = null; + try { + JAXBContext context = JAXBContext.newInstance(clazz); + marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + marshaller.setProperty("jaxb.fragment", Boolean.TRUE); + } catch (Exception ex) { + System.out.println(EXCEPTION_ENCOUNTERED + ex); + } + return marshaller; + } + + public static void example() { + try { + XMLExample xml = (XMLExample) JAXBHelper.getContextUnmarshaller(XMLExample.class).unmarshal(new File(XML_FILE_IN)); + JAXBHelper.print(xml.toString()); + ExampleHTML html = new ExampleHTML(); + + Body body = new Body(); + CustomElement customElement = new CustomElement(); + NestedElement nested = new NestedElement(); + CustomElement child = new CustomElement(); + + customElement.setValue("descendantOne: " + xml.getAncestor().getDescendantOne().getValue()); + child.setValue("descendantThree: " + xml.getAncestor().getDescendantTwo().getDescendantThree().getValue()); + nested.setCustomElement(child); + + body.setCustomElement(customElement); + body.setNestedElement(nested); + + Meta meta = new Meta(); + meta.setTitle("example"); + html.getHead().add(meta); + html.setBody(body); + + JAXBHelper.getContextMarshaller(ExampleHTML.class).marshal(html, new File(JAXB_FILE_OUT)); + + } catch (Exception ex) { + System.out.println(EXCEPTION_ENCOUNTERED + ex); + } + } +} \ No newline at end of file diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java b/xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java new file mode 100644 index 0000000000..3c288122a3 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java @@ -0,0 +1,103 @@ +package com.baeldung.xmlhtml.jaxp; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.HashMap; +import java.util.Map; + +public class JaxpTransformer { + + private Document input; + private DocumentBuilderFactory factory; + + public JaxpTransformer(String resourcePath) throws ParserConfigurationException, IOException, SAXException { + // 1- Build the doc from the XML file + factory = DocumentBuilderFactory.newInstance(); + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + input = factory + .newDocumentBuilder() + .parse(resourcePath); + } + + public String html() throws ParserConfigurationException, TransformerException, IOException { + Element xml = input.getDocumentElement(); + Document doc = factory + .newDocumentBuilder() + .newDocument(); + //Build Map + Map map = buildMap(xml); + //Head + Element html = doc.createElement("html"); + html.setAttribute("lang", "en"); + Element head = buildHead(map, doc); + html.appendChild(head); + //Body + Element body = buildBody(map, doc); + html.appendChild(body); + doc.appendChild(html); + return String.format("%n%s", applyTransformation(doc)); + } + + private String applyTransformation(Document doc) throws TransformerException, IOException { + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + try (Writer output = new StringWriter()) { + Transformer transformer = transformerFactory.newTransformer(); + transformer.transform(new DOMSource(doc), new StreamResult(output)); + return output.toString(); + } + } + + private Map buildMap(Element xml) { + Map map = new HashMap<>(); + map.put("heading", xml + .getElementsByTagName("heading") + .item(0) + .getTextContent()); + map.put("from", String.format("from: %s", xml + .getElementsByTagName("from") + .item(0) + .getTextContent())); + map.put("content", xml + .getElementsByTagName("content") + .item(0) + .getTextContent()); + return map; + } + + private Element buildHead(Map map, Document doc) { + Element head = doc.createElement("head"); + Element title = doc.createElement("title"); + title.setTextContent(map.get("heading")); + head.appendChild(title); + return head; + } + + private Element buildBody(Map map, Document doc) { + Element body = doc.createElement("body"); + Element from = doc.createElement("p"); + from.setTextContent(map.get("from")); + Element success = doc.createElement("p"); + success.setTextContent(map.get("content")); + body.appendChild(from); + body.appendChild(success); + return body; + } + +} diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java b/xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java new file mode 100644 index 0000000000..e449e74c3b --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java @@ -0,0 +1,30 @@ +package com.baeldung.xmlhtml.mustache; + +import com.baeldung.xmlhtml.stax.StaxTransformer; +import com.github.mustachejava.DefaultMustacheFactory; +import com.github.mustachejava.Mustache; +import com.github.mustachejava.MustacheFactory; + +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; + +public class MustacheTransformer { + private StaxTransformer staxTransformer; + private String templateFile; + + public MustacheTransformer(StaxTransformer staxTransformer, String templateFile) { + this.staxTransformer = staxTransformer; + this.templateFile = templateFile; + } + + public String html() throws IOException { + MustacheFactory mf = new DefaultMustacheFactory(); + Mustache mustache = mf.compile(templateFile); + try (Writer output = new StringWriter()) { + mustache.execute(output, staxTransformer.getMap()); + output.flush(); + return output.toString(); + } + } +} diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java new file mode 100644 index 0000000000..4ab9c31508 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java @@ -0,0 +1,38 @@ +package com.baeldung.xmlhtml.pojo.jaxb.html; + +import com.baeldung.xmlhtml.pojo.jaxb.html.elements.Body; +import com.baeldung.xmlhtml.pojo.jaxb.html.elements.Meta; +import jakarta.xml.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +@XmlType(propOrder = {"head", "body"}) +@XmlRootElement(name = "html") +public class ExampleHTML { + + private List head = new ArrayList<>(); + + private Body body; + + public ExampleHTML() { } + + public List getHead() { + return head; + } + + @XmlElementWrapper(name = "head") + @XmlElement(name = "meta") + public void setHead(List head) { + this.head = head; + } + + public Body getBody() { + return body; + } + + @XmlElement(name = "body") + public void setBody(Body body) { + this.body = body; + } +} diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java new file mode 100644 index 0000000000..bc4486b927 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java @@ -0,0 +1,29 @@ +package com.baeldung.xmlhtml.pojo.jaxb.html.elements; + +import jakarta.xml.bind.annotation.XmlElement; + +public class Body { + + private CustomElement customElement; + + public CustomElement getCustomElement() { + return customElement; + } + + @XmlElement(name = "p") + public void setCustomElement(CustomElement customElement) { + this.customElement = customElement; + } + + private NestedElement nestedElement; + + public NestedElement getNestedElement() { + return nestedElement; + } + + @XmlElement(name = "div") + public void setNestedElement(NestedElement nestedElement) { + this.nestedElement = nestedElement; + } + +} \ No newline at end of file diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java new file mode 100644 index 0000000000..7227843f61 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java @@ -0,0 +1,18 @@ +package com.baeldung.xmlhtml.pojo.jaxb.html.elements; + +import jakarta.xml.bind.annotation.XmlValue; + +public class CustomElement { + + private String value; + + @XmlValue + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java new file mode 100644 index 0000000000..9ae7bfea27 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java @@ -0,0 +1,30 @@ +package com.baeldung.xmlhtml.pojo.jaxb.html.elements; + +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlValue; + +public class Meta { + + private String title; + + public String getTitle() { + return title; + } + + @XmlAttribute(name = "title") + public void setTitle(String title) { + this.title = title; + } + + private String value; + + @XmlValue + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} \ No newline at end of file diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java new file mode 100644 index 0000000000..0cd22f73df --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java @@ -0,0 +1,17 @@ +package com.baeldung.xmlhtml.pojo.jaxb.html.elements; + +import jakarta.xml.bind.annotation.XmlElement; + +public class NestedElement { + + private CustomElement customElement; + + public CustomElement getCustomElement() { + return customElement; + } + + @XmlElement(name = "p") + public void setCustomElement(CustomElement customElement) { + this.customElement = customElement; + } +} \ No newline at end of file diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java new file mode 100644 index 0000000000..ef489ef643 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java @@ -0,0 +1,20 @@ +package com.baeldung.xmlhtml.pojo.jaxb.xml; + +import com.baeldung.xmlhtml.pojo.jaxb.xml.elements.Ancestor; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "xmlexample") +public class XMLExample { + + private Ancestor ancestor; + + @XmlElement(name = "ancestor") + public void setAncestor(Ancestor ancestor) { + this.ancestor = ancestor; + } + + public Ancestor getAncestor() { + return ancestor; + } +} \ No newline at end of file diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java new file mode 100644 index 0000000000..ab5e762b61 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java @@ -0,0 +1,28 @@ +package com.baeldung.xmlhtml.pojo.jaxb.xml.elements; + +import jakarta.xml.bind.annotation.XmlElement; + +public class Ancestor { + + private DescendantOne descendantOne; + private DescendantTwo descendantTwo; + + public DescendantOne getDescendantOne() { + return descendantOne; + } + + @XmlElement(name = "descendantOne") + public void setDescendantOne(DescendantOne descendantOne) { + this.descendantOne = descendantOne; + } + + public DescendantTwo getDescendantTwo() { + return descendantTwo; + } + + @XmlElement(name = "descendantTwo") + public void setDescendantTwo(DescendantTwo descendantTwo) { + this.descendantTwo = descendantTwo; + } +} + diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java new file mode 100644 index 0000000000..f4b6ea99d5 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java @@ -0,0 +1,19 @@ +package com.baeldung.xmlhtml.pojo.jaxb.xml.elements; + +import jakarta.xml.bind.annotation.XmlValue; + +public class DescendantOne { + + private String value; + + @XmlValue + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} + diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java new file mode 100644 index 0000000000..fb81e26f01 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java @@ -0,0 +1,18 @@ +package com.baeldung.xmlhtml.pojo.jaxb.xml.elements; + +import jakarta.xml.bind.annotation.XmlValue; + +public class DescendantThree { + + private String value; + + @XmlValue + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} \ No newline at end of file diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java new file mode 100644 index 0000000000..19c337a142 --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java @@ -0,0 +1,17 @@ +package com.baeldung.xmlhtml.pojo.jaxb.xml.elements; + +import jakarta.xml.bind.annotation.XmlElement; + +public class DescendantTwo { + + private DescendantThree descendantThree; + + public DescendantThree getDescendantThree() { + return descendantThree; + } + + @XmlElement(name = "descendantThree") + public void setDescendant(DescendantThree descendantThree) { + this.descendantThree = descendantThree; + } +} \ No newline at end of file diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java b/xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java new file mode 100644 index 0000000000..d7762f3c1f --- /dev/null +++ b/xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java @@ -0,0 +1,99 @@ +package com.baeldung.xmlhtml.stax; + +import javax.xml.stream.*; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.HashMap; +import java.util.Map; + +public class StaxTransformer { + + private Map map; + + public StaxTransformer(String resourcePath) throws IOException, XMLStreamException { + XMLInputFactory factory = XMLInputFactory.newInstance(); + factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE); + factory.setProperty(XMLInputFactory.SUPPORT_DTD, Boolean.FALSE); + XMLStreamReader input = null; + try (FileInputStream file = new FileInputStream(resourcePath)) { + input = factory.createXMLStreamReader(file); + map = buildMap(input); + } finally { + if (input != null) { + input.close(); + } + } + } + + public String html() throws XMLStreamException, IOException { + try (Writer output = new StringWriter()) { + XMLStreamWriter writer = XMLOutputFactory + .newInstance() + .createXMLStreamWriter(output); + //Head + writer.writeDTD(""); + writer.writeCharacters(String.format("%n")); + writer.writeStartElement("html"); + writer.writeAttribute("lang", "en"); + writer.writeCharacters(String.format("%n")); + writer.writeStartElement("head"); + writer.writeCharacters(String.format("%n")); + writer.writeDTD(""); + writer.writeCharacters(String.format("%n")); + writer.writeStartElement("title"); + writer.writeCharacters(map.get("heading")); + writer.writeEndElement(); + writer.writeCharacters(String.format("%n")); + writer.writeEndElement(); + writer.writeCharacters(String.format("%n")); + //Body + writer.writeStartElement("body"); + writer.writeCharacters(String.format("%n")); + writer.writeStartElement("p"); + writer.writeCharacters(map.get("from")); + writer.writeEndElement(); + writer.writeCharacters(String.format("%n")); + writer.writeStartElement("p"); + writer.writeCharacters(map.get("content")); + writer.writeEndElement(); + writer.writeCharacters(String.format("%n")); + writer.writeEndElement(); + writer.writeCharacters(String.format("%n")); + writer.writeEndDocument(); + writer.writeCharacters(String.format("%n")); + writer.flush(); + return output.toString(); + } + } + + private Map buildMap(XMLStreamReader input) throws XMLStreamException { + Map tempMap = new HashMap<>(); + while (input.hasNext()) { + input.next(); + if (input.isStartElement()) { + if (input + .getLocalName() + .equals("heading")) { + tempMap.put("heading", input.getElementText()); + } + if (input + .getLocalName() + .equals("from")) { + tempMap.put("from", String.format("from: %s", input.getElementText())); + } + if (input + .getLocalName() + .equals("content")) { + tempMap.put("content", input.getElementText()); + } + } + } + return tempMap; + } + + public Map getMap() { + return map; + } +} diff --git a/xml-2/src/main/resources/customer-binding.xml b/xml-2/src/main/resources/customer-binding.xml new file mode 100644 index 0000000000..c1a80366ef --- /dev/null +++ b/xml-2/src/main/resources/customer-binding.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xml-2/src/main/resources/xml/attribute.xml b/xml-2/src/main/resources/xml/attribute.xml new file mode 100644 index 0000000000..c8fa3f1071 --- /dev/null +++ b/xml-2/src/main/resources/xml/attribute.xml @@ -0,0 +1,5 @@ + + + john@email.com + mary@email.com + \ No newline at end of file diff --git a/xml-2/src/main/resources/xml/attribute_expected.xml b/xml-2/src/main/resources/xml/attribute_expected.xml new file mode 100644 index 0000000000..1d5d7b0cea --- /dev/null +++ b/xml-2/src/main/resources/xml/attribute_expected.xml @@ -0,0 +1,5 @@ + + + john@email.com + mary@email.com + \ No newline at end of file diff --git a/xml-2/src/main/resources/xml/in.xml b/xml-2/src/main/resources/xml/in.xml new file mode 100644 index 0000000000..6fcb404012 --- /dev/null +++ b/xml-2/src/main/resources/xml/in.xml @@ -0,0 +1,11 @@ + + + + Yo + + + DustyOrb + + + + \ No newline at end of file diff --git a/xml-2/src/main/resources/xml/jaxb.html b/xml-2/src/main/resources/xml/jaxb.html new file mode 100644 index 0000000000..80b894cff7 --- /dev/null +++ b/xml-2/src/main/resources/xml/jaxb.html @@ -0,0 +1,14 @@ + + + + + + +

descendantOne: Yo

+
+

descendantThree: + DustyOrb +

+
+ + diff --git a/xml-2/src/main/resources/xml/jaxp.html b/xml-2/src/main/resources/xml/jaxp.html new file mode 100644 index 0000000000..5392eef509 --- /dev/null +++ b/xml-2/src/main/resources/xml/jaxp.html @@ -0,0 +1,13 @@ + + + + + +

descendantOne: Yo

+
+

descendantThree: + DustyOrb +

+
+ + diff --git a/xml-2/src/main/resources/xml/stax.html b/xml-2/src/main/resources/xml/stax.html new file mode 100644 index 0000000000..01951dc7de --- /dev/null +++ b/xml-2/src/main/resources/xml/stax.html @@ -0,0 +1,15 @@ + + + + + +

descendantOne: Yo

+
+

+ descendantThree: + DustyOrb + +

+
+ + \ No newline at end of file diff --git a/xml-2/src/main/resources/xmltopdf/data-input.xml b/xml-2/src/main/resources/xmltopdf/data-input.xml new file mode 100644 index 0000000000..385fcf661c --- /dev/null +++ b/xml-2/src/main/resources/xmltopdf/data-input.xml @@ -0,0 +1,26 @@ + + + + + + Death and the Penguin + Andrey Kurkov + 10.99 + + + Kobzar + Taras Shevchenko + 8.50 + + + + + + + Voroshilovgrad + Serhiy Zhadan + 12.99 + + + + diff --git a/xml-2/src/main/resources/xmltopdf/style.xsl b/xml-2/src/main/resources/xmltopdf/style.xsl new file mode 100644 index 0000000000..a0c5fbb49a --- /dev/null +++ b/xml-2/src/main/resources/xmltopdf/style.xsl @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + Bookstore Inventory + + + + + + + + + + Bookstore ID + + + Book ID + + + Title + + + Author + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java new file mode 100644 index 0000000000..ae385fe62b --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java @@ -0,0 +1,69 @@ +package com.baeldung.xml.attribute; + +import org.dom4j.DocumentException; +import org.junit.jupiter.api.Test; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactoryConfigurationError; +import javax.xml.xpath.XPathExpressionException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.xmlunit.assertj.XmlAssert.assertThat; + +/** + * Unit test for {@link Dom4jTransformer}. + */ +public class Dom4jProcessorUnitTest { + + @Test + public void givenXmlWithAttributes_whenModifyAttribute_thenGetXmlUpdated() throws TransformerFactoryConfigurationError, TransformerException, DocumentException, SAXException { + String path = getClass().getResource("/xml/attribute.xml") + .toString(); + Dom4jTransformer transformer = new Dom4jTransformer(path); + String attribute = "customer"; + String oldValue = "true"; + String newValue = "false"; + + String result = transformer.modifyAttribute(attribute, oldValue, newValue); + + assertThat(result).hasXPath("//*[contains(@customer, 'false')]"); + } + + @Test + public void givenTwoXml_whenModifyAttribute_thenGetSimilarXml() throws IOException, TransformerFactoryConfigurationError, TransformerException, URISyntaxException, DocumentException, SAXException { + String path = getClass().getResource("/xml/attribute.xml") + .toString(); + Dom4jTransformer transformer = new Dom4jTransformer(path); + String attribute = "customer"; + String oldValue = "true"; + String newValue = "false"; + String expectedXml = new String(Files.readAllBytes((Paths.get(getClass().getResource("/xml/attribute_expected.xml") + .toURI())))); + + String result = transformer + .modifyAttribute(attribute, oldValue, newValue) + .replaceAll("(?m)^[ \t]*\r?\n", "");//Delete extra spaces added by Java 11 + + assertThat(result).and(expectedXml) + .areSimilar(); + } + + @Test + public void givenXmlXee_whenInit_thenThrowException() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException, TransformerFactoryConfigurationError, TransformerException { + String path = getClass().getResource("/xml/xee_attribute.xml") + .toString(); + + assertThatThrownBy(() -> { + + new Dom4jTransformer(path); + + }).isInstanceOf(DocumentException.class); + } + +} diff --git a/xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java new file mode 100644 index 0000000000..46c954aee0 --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.xml.attribute; + +import org.junit.jupiter.api.Test; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactoryConfigurationError; +import javax.xml.xpath.XPathExpressionException; +import java.io.IOException; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.xmlunit.assertj.XmlAssert.assertThat; + +/** + * Unit test for {@link JaxpTransformer}. + */ +public class JaxpProcessorUnitTest { + + @Test + public void givenXmlWithAttributes_whenModifyAttribute_thenGetXmlUpdated() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException, TransformerFactoryConfigurationError, TransformerException { + String path = getClass().getResource("/xml/attribute.xml") + .toString(); + JaxpTransformer transformer = new JaxpTransformer(path); + String attribute = "customer"; + String oldValue = "true"; + String newValue = "false"; + + String result = transformer.modifyAttribute(attribute, oldValue, newValue); + + assertThat(result).hasXPath("//*[contains(@customer, 'false')]"); + } + + @Test + public void givenXmlXee_whenInit_thenThrowException() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException, TransformerFactoryConfigurationError, TransformerException { + String path = getClass().getResource("/xml/xee_attribute.xml") + .toString(); + + assertThatThrownBy(() -> { + + new JaxpTransformer(path); + + }).isInstanceOf(SAXParseException.class); + } + +} diff --git a/xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java new file mode 100644 index 0000000000..3a249e6dd7 --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java @@ -0,0 +1,69 @@ +package com.baeldung.xml.attribute; + +import org.junit.jupiter.api.Test; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactoryConfigurationError; +import javax.xml.xpath.XPathExpressionException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.xmlunit.assertj.XmlAssert.assertThat; + +/** + * Unit test for {@link JooxTransformer}. + */ +public class JooxProcessorUnitTest { + + @Test + public void givenXmlWithAttributes_whenModifyAttribute_thenGetXmlUpdated() throws IOException, SAXException, TransformerFactoryConfigurationError { + String path = getClass().getResource("/xml/attribute.xml") + .toString(); + JooxTransformer transformer = new JooxTransformer(path); + String attribute = "customer"; + String oldValue = "true"; + String newValue = "false"; + + String result = transformer.modifyAttribute(attribute, oldValue, newValue); + + assertThat(result).hasXPath("//*[contains(@customer, 'false')]"); + } + + @Test + public void givenTwoXml_whenModifyAttribute_thenGetSimilarXml() throws IOException, TransformerFactoryConfigurationError, URISyntaxException, SAXException { + String path = getClass().getResource("/xml/attribute.xml") + .toString(); + JooxTransformer transformer = new JooxTransformer(path); + String attribute = "customer"; + String oldValue = "true"; + String newValue = "false"; + String expectedXml = new String(Files.readAllBytes((Paths.get(getClass().getResource("/xml/attribute_expected.xml") + .toURI())))); + + String result = transformer + .modifyAttribute(attribute, oldValue, newValue) + .replaceAll("(?m)^[ \t]*\r?\n", "");//Delete extra spaces added by Java 11 + + assertThat(result).and(expectedXml) + .areSimilar(); + } + + @Test + public void givenXmlXee_whenInit_thenThrowException() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException, TransformerFactoryConfigurationError, TransformerException { + String path = getClass().getResource("/xml/xee_attribute.xml") + .toString(); + + assertThatThrownBy(() -> { + + new JooxTransformer(path); + + }).isInstanceOf(SAXParseException.class); + } + +} diff --git a/xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java new file mode 100644 index 0000000000..9a4b5bc14b --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java @@ -0,0 +1,52 @@ +package com.baeldung.xml.jibx; + +import org.jibx.runtime.BindingDirectory; +import org.jibx.runtime.IBindingFactory; +import org.jibx.runtime.IUnmarshallingContext; +import org.jibx.runtime.JiBXException; +import org.junit.Test; + +import java.io.FileNotFoundException; +import java.io.InputStream; + +import static junit.framework.Assert.assertEquals; + +public class CustomerUnitTest { + + @Test + public void whenUnmarshalXML_ThenFieldsAreMapped() throws JiBXException, FileNotFoundException { + IBindingFactory bfact = BindingDirectory.getFactory(Customer.class); + IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + InputStream inputStream = classLoader.getResourceAsStream("Customer1.xml"); + Customer customer = (Customer) uctx.unmarshalDocument(inputStream, null); + + assertEquals("Stefan Jaeger", customer.getPerson().getName()); + assertEquals("Davos Dorf", customer.getCity()); + + } + + @Test + public void WhenUnmarshal_ThenMappingInherited() throws JiBXException, FileNotFoundException { + IBindingFactory bfact = BindingDirectory.getFactory(Customer.class); + IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + InputStream inputStream = classLoader.getResourceAsStream("Customer1.xml"); + Customer customer = (Customer) uctx.unmarshalDocument(inputStream, null); + + assertEquals(12345, customer.getPerson().getCustomerId()); + + } + + @Test + public void WhenUnmarshal_ThenPhoneMappingRead() throws JiBXException, FileNotFoundException { + IBindingFactory bfact = BindingDirectory.getFactory(Customer.class); + IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + InputStream inputStream = classLoader.getResourceAsStream("Customer1.xml"); + Customer customer = (Customer) uctx.unmarshalDocument(inputStream, null); + + assertEquals("234678", customer.getHomePhone().getNumber()); + + } +} diff --git a/xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java new file mode 100644 index 0000000000..6d4a4f8bda --- /dev/null +++ b/xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.xml.xml2pdf; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; + +import java.io.File; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class XmlToPdfConverterUnitTest { + + private static final String BASE_PATH = "src/main/resources/xmltopdf/"; + + private static final String STYLE_XSL = BASE_PATH + "style.xsl"; + private static final String DATA_XML_INPUT = BASE_PATH + "data-input.xml"; + private static final String DATA_PDF_OUTPUT = BASE_PATH + "data-output.pdf"; + + // Comment out this method if you need to keep the outputted PDF file. + @AfterEach + public void teardown() { + new File(DATA_PDF_OUTPUT).delete(); + } + + @Test + public void givenXmlFile_whenConvertToPdfUsingFop_thenPdfGenerated() throws Exception { + // Execute XML to PDF conversion + XmlToPdfConverter.convertXMLtoPDFUsingFop(DATA_XML_INPUT, STYLE_XSL, DATA_PDF_OUTPUT); + // Check if PDF file was created + File pdfFile = new File(DATA_PDF_OUTPUT); + assertTrue(pdfFile.exists()); + assertTrue(pdfFile.isFile()); + assertTrue(pdfFile.length() > 0); + + } + + @Test + public void givenXmlFile_whenConvertToPdfUsingIText_thenPdfGenerated() throws Exception { + // Execute XML to PDF conversion + XmlToPdfConverter.convertXMLtoPDFUsingIText(DATA_XML_INPUT, DATA_PDF_OUTPUT); + // Check if PDF file was created + File pdfFile = new File(DATA_PDF_OUTPUT); + assertTrue(pdfFile.exists()); + assertTrue(pdfFile.isFile()); + assertTrue(pdfFile.length() > 0); + } + +} From 4930100f9ae87f9d5c0b16d75889efc3fe538171 Mon Sep 17 00:00:00 2001 From: YuCheng Hu Date: Tue, 29 Apr 2025 18:20:58 -0400 Subject: [PATCH 3/3] change package name --- .../xml/XMLDocumentWriter.java | 2 +- .../xml/attribute/Dom4jTransformer.java | 2 +- .../xml/attribute/JaxpTransformer.java | 2 +- .../xml/attribute/JooxTransformer.java | 2 +- .../xml/attribute/jmh/AttributeBenchMark.java | 8 +- .../xml/jibx/Customer.java | 2 +- .../xml/jibx/Identity.java | 2 +- .../xml/jibx/Person.java | 2 +- .../xml/jibx/Phone.java | 2 +- .../xml/tohashmap/Employee.java | 2 +- .../xml/tohashmap/Employees.java | 2 +- .../xml/tohashmap/XmlToHashMap.java | 2 +- .../xml/xml2csv/Xml2CsvExample.java | 2 +- .../xml/xml2pdf/XmlToPdfConverter.java | 2 +- .../xmlhtml/Application.java | 4 +- .../xmlhtml/Constants.java | 2 +- .../freemarker/FreemarkerTransformer.java | 4 +- .../xmlhtml/helpers/XMLRunner.java | 4 +- .../xmlhtml/helpers/jaxb/JAXBHelper.java | 16 ++-- .../xmlhtml/jaxp/JaxpTransformer.java | 2 +- .../xmlhtml/mustache/MustacheTransformer.java | 4 +- .../xmlhtml/pojo/jaxb/html/ExampleHTML.java | 6 +- .../xmlhtml/pojo/jaxb/html/elements/Body.java | 2 +- .../jaxb/html/elements/CustomElement.java | 2 +- .../xmlhtml/pojo/jaxb/html/elements/Meta.java | 2 +- .../jaxb/html/elements/NestedElement.java | 2 +- .../xmlhtml/pojo/jaxb/xml/XMLExample.java | 4 +- .../pojo/jaxb/xml/elements/Ancestor.java | 2 +- .../pojo/jaxb/xml/elements/DescendantOne.java | 2 +- .../jaxb/xml/elements/DescendantThree.java | 2 +- .../pojo/jaxb/xml/elements/DescendantTwo.java | 2 +- .../xmlhtml/stax/StaxTransformer.java | 2 +- xml-2/src/main/resources/customer-binding.xml | 12 +-- .../xml/XMLDocumentWriterUnitTest.java | 3 +- .../xml/attribute/Dom4jProcessorUnitTest.java | 3 +- .../xml/attribute/JaxpProcessorUnitTest.java | 3 +- .../xml/attribute/JooxProcessorUnitTest.java | 3 +- .../InvalidCharactersUnitTest.java | 2 +- .../xml/jibx/CustomerUnitTest.java | 3 +- .../xml/tohashmap/XmlToHashMapUnitTest.java | 5 +- .../xml/xml2csv/Xml2CsvExampleUnitTest.java | 3 +- .../XMLStringToDocumentObjectUnitTest.java | 74 +++++++++---------- .../xml2pdf/XmlToPdfConverterUnitTest.java | 3 +- .../delhtmltags/RemoveHtmlTagsLiveTest.java | 2 +- .../FreemarkerTransformerUnitTest.java | 5 +- .../xmlhtml/jaxp/JaxpTransformerUnitTest.java | 3 +- .../mustache/MustacheTransformerUnitTest.java | 5 +- .../xmlhtml/stax/StaxTransformerUnitTest.java | 3 +- 48 files changed, 121 insertions(+), 109 deletions(-) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/XMLDocumentWriter.java (98%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/attribute/Dom4jTransformer.java (98%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/attribute/JaxpTransformer.java (98%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/attribute/JooxTransformer.java (96%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/attribute/jmh/AttributeBenchMark.java (92%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/jibx/Customer.java (96%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/jibx/Identity.java (85%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/jibx/Person.java (92%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/jibx/Phone.java (83%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/tohashmap/Employee.java (93%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/tohashmap/Employees.java (92%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/tohashmap/XmlToHashMap.java (99%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/xml2csv/Xml2CsvExample.java (99%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xml/xml2pdf/XmlToPdfConverter.java (98%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/Application.java (58%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/Constants.java (96%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/freemarker/FreemarkerTransformer.java (94%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/helpers/XMLRunner.java (52%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/helpers/jaxb/JAXBHelper.java (83%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/jaxp/JaxpTransformer.java (99%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/mustache/MustacheTransformer.java (90%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/pojo/jaxb/html/ExampleHTML.java (80%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/pojo/jaxb/html/elements/Body.java (91%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/pojo/jaxb/html/elements/CustomElement.java (82%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/pojo/jaxb/html/elements/Meta.java (89%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/pojo/jaxb/html/elements/NestedElement.java (86%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/pojo/jaxb/xml/XMLExample.java (78%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java (92%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java (82%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java (82%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java (87%) rename xml-2/src/main/java/com/{baeldung => isharkfly}/xmlhtml/stax/StaxTransformer.java (99%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xml/XMLDocumentWriterUnitTest.java (96%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xml/attribute/Dom4jProcessorUnitTest.java (96%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xml/attribute/JaxpProcessorUnitTest.java (94%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xml/attribute/JooxProcessorUnitTest.java (96%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xml/invalidcharacters/InvalidCharactersUnitTest.java (98%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xml/jibx/CustomerUnitTest.java (96%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xml/tohashmap/XmlToHashMapUnitTest.java (94%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xml/xml2csv/Xml2CsvExampleUnitTest.java (98%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xml/xml2document/XMLStringToDocumentObjectUnitTest.java (94%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xml/xml2pdf/XmlToPdfConverterUnitTest.java (94%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java (98%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java (87%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xmlhtml/jaxp/JaxpTransformerUnitTest.java (92%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xmlhtml/mustache/MustacheTransformerUnitTest.java (86%) rename xml-2/src/test/java/com/{baeldung => isharkfly}/xmlhtml/stax/StaxTransformerUnitTest.java (91%) diff --git a/xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java b/xml-2/src/main/java/com/isharkfly/xml/XMLDocumentWriter.java similarity index 98% rename from xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java rename to xml-2/src/main/java/com/isharkfly/xml/XMLDocumentWriter.java index 7dc9872d2b..6cb21d1a71 100644 --- a/xml-2/src/main/java/com/baeldung/xml/XMLDocumentWriter.java +++ b/xml-2/src/main/java/com/isharkfly/xml/XMLDocumentWriter.java @@ -1,4 +1,4 @@ -package com.baeldung.xml; +package com.isharkfly.xml; import org.w3c.dom.Document; diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java b/xml-2/src/main/java/com/isharkfly/xml/attribute/Dom4jTransformer.java similarity index 98% rename from xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java rename to xml-2/src/main/java/com/isharkfly/xml/attribute/Dom4jTransformer.java index 631cf80cb0..25020ef50d 100644 --- a/xml-2/src/main/java/com/baeldung/xml/attribute/Dom4jTransformer.java +++ b/xml-2/src/main/java/com/isharkfly/xml/attribute/Dom4jTransformer.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.attribute; +package com.isharkfly.xml.attribute; import org.dom4j.*; import org.dom4j.io.DocumentSource; diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java b/xml-2/src/main/java/com/isharkfly/xml/attribute/JaxpTransformer.java similarity index 98% rename from xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java rename to xml-2/src/main/java/com/isharkfly/xml/attribute/JaxpTransformer.java index ef2f9dc822..f7ae242cf1 100644 --- a/xml-2/src/main/java/com/baeldung/xml/attribute/JaxpTransformer.java +++ b/xml-2/src/main/java/com/isharkfly/xml/attribute/JaxpTransformer.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.attribute; +package com.isharkfly.xml.attribute; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java b/xml-2/src/main/java/com/isharkfly/xml/attribute/JooxTransformer.java similarity index 96% rename from xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java rename to xml-2/src/main/java/com/isharkfly/xml/attribute/JooxTransformer.java index d36d60ec59..e1ffcbb39e 100644 --- a/xml-2/src/main/java/com/baeldung/xml/attribute/JooxTransformer.java +++ b/xml-2/src/main/java/com/isharkfly/xml/attribute/JooxTransformer.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.attribute; +package com.isharkfly.xml.attribute; import org.joox.JOOX; import org.joox.Match; diff --git a/xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java b/xml-2/src/main/java/com/isharkfly/xml/attribute/jmh/AttributeBenchMark.java similarity index 92% rename from xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java rename to xml-2/src/main/java/com/isharkfly/xml/attribute/jmh/AttributeBenchMark.java index 849b6ef945..f785de395b 100644 --- a/xml-2/src/main/java/com/baeldung/xml/attribute/jmh/AttributeBenchMark.java +++ b/xml-2/src/main/java/com/isharkfly/xml/attribute/jmh/AttributeBenchMark.java @@ -1,8 +1,8 @@ -package com.baeldung.xml.attribute.jmh; +package com.isharkfly.xml.attribute.jmh; -import com.baeldung.xml.attribute.Dom4jTransformer; -import com.baeldung.xml.attribute.JaxpTransformer; -import com.baeldung.xml.attribute.JooxTransformer; +import com.isharkfly.xml.attribute.Dom4jTransformer; +import com.isharkfly.xml.attribute.JaxpTransformer; +import com.isharkfly.xml.attribute.JooxTransformer; import org.dom4j.DocumentException; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java b/xml-2/src/main/java/com/isharkfly/xml/jibx/Customer.java similarity index 96% rename from xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java rename to xml-2/src/main/java/com/isharkfly/xml/jibx/Customer.java index a660451080..f5e19a5b05 100644 --- a/xml-2/src/main/java/com/baeldung/xml/jibx/Customer.java +++ b/xml-2/src/main/java/com/isharkfly/xml/jibx/Customer.java @@ -4,7 +4,7 @@ * Copyright 2008 Stefan Jäger * */ -package com.baeldung.xml.jibx; +package com.isharkfly.xml.jibx; import org.apache.commons.lang3.builder.ToStringBuilder; diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java b/xml-2/src/main/java/com/isharkfly/xml/jibx/Identity.java similarity index 85% rename from xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java rename to xml-2/src/main/java/com/isharkfly/xml/jibx/Identity.java index 15aab4e417..026addfca7 100644 --- a/xml-2/src/main/java/com/baeldung/xml/jibx/Identity.java +++ b/xml-2/src/main/java/com/isharkfly/xml/jibx/Identity.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.jibx; +package com.isharkfly.xml.jibx; public class Identity { diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Person.java b/xml-2/src/main/java/com/isharkfly/xml/jibx/Person.java similarity index 92% rename from xml-2/src/main/java/com/baeldung/xml/jibx/Person.java rename to xml-2/src/main/java/com/isharkfly/xml/jibx/Person.java index 43af659319..9d30a8f180 100644 --- a/xml-2/src/main/java/com/baeldung/xml/jibx/Person.java +++ b/xml-2/src/main/java/com/isharkfly/xml/jibx/Person.java @@ -4,7 +4,7 @@ * Copyright 2008 Stefan Jäger * */ -package com.baeldung.xml.jibx; +package com.isharkfly.xml.jibx; import org.apache.commons.lang3.builder.ToStringBuilder; diff --git a/xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java b/xml-2/src/main/java/com/isharkfly/xml/jibx/Phone.java similarity index 83% rename from xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java rename to xml-2/src/main/java/com/isharkfly/xml/jibx/Phone.java index 783f2ee6fb..eec95fcc75 100644 --- a/xml-2/src/main/java/com/baeldung/xml/jibx/Phone.java +++ b/xml-2/src/main/java/com/isharkfly/xml/jibx/Phone.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.jibx; +package com.isharkfly.xml.jibx; public class Phone { diff --git a/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employee.java b/xml-2/src/main/java/com/isharkfly/xml/tohashmap/Employee.java similarity index 93% rename from xml-2/src/main/java/com/baeldung/xml/tohashmap/Employee.java rename to xml-2/src/main/java/com/isharkfly/xml/tohashmap/Employee.java index c9c40e743a..b9dfa7f037 100644 --- a/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employee.java +++ b/xml-2/src/main/java/com/isharkfly/xml/tohashmap/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.tohashmap; +package com.isharkfly.xml.tohashmap; public class Employee { private String id; diff --git a/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java b/xml-2/src/main/java/com/isharkfly/xml/tohashmap/Employees.java similarity index 92% rename from xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java rename to xml-2/src/main/java/com/isharkfly/xml/tohashmap/Employees.java index 8dcc27495f..00d132b608 100644 --- a/xml-2/src/main/java/com/baeldung/xml/tohashmap/Employees.java +++ b/xml-2/src/main/java/com/isharkfly/xml/tohashmap/Employees.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.tohashmap; +package com.isharkfly.xml.tohashmap; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlRootElement; diff --git a/xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java b/xml-2/src/main/java/com/isharkfly/xml/tohashmap/XmlToHashMap.java similarity index 99% rename from xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java rename to xml-2/src/main/java/com/isharkfly/xml/tohashmap/XmlToHashMap.java index 7dfef234fb..45b91d1748 100644 --- a/xml-2/src/main/java/com/baeldung/xml/tohashmap/XmlToHashMap.java +++ b/xml-2/src/main/java/com/isharkfly/xml/tohashmap/XmlToHashMap.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.tohashmap; +package com.isharkfly.xml.tohashmap; import java.io.IOException; import java.io.StringReader; diff --git a/xml-2/src/main/java/com/baeldung/xml/xml2csv/Xml2CsvExample.java b/xml-2/src/main/java/com/isharkfly/xml/xml2csv/Xml2CsvExample.java similarity index 99% rename from xml-2/src/main/java/com/baeldung/xml/xml2csv/Xml2CsvExample.java rename to xml-2/src/main/java/com/isharkfly/xml/xml2csv/Xml2CsvExample.java index 84098b33f8..7149971a40 100644 --- a/xml-2/src/main/java/com/baeldung/xml/xml2csv/Xml2CsvExample.java +++ b/xml-2/src/main/java/com/isharkfly/xml/xml2csv/Xml2CsvExample.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.xml2csv; +package com.isharkfly.xml.xml2csv; import java.io.BufferedWriter; import java.io.File; diff --git a/xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java b/xml-2/src/main/java/com/isharkfly/xml/xml2pdf/XmlToPdfConverter.java similarity index 98% rename from xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java rename to xml-2/src/main/java/com/isharkfly/xml/xml2pdf/XmlToPdfConverter.java index c65080b106..2cb02c0b06 100644 --- a/xml-2/src/main/java/com/baeldung/xml/xml2pdf/XmlToPdfConverter.java +++ b/xml-2/src/main/java/com/isharkfly/xml/xml2pdf/XmlToPdfConverter.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.xml2pdf; +package com.isharkfly.xml.xml2pdf; import com.itextpdf.text.Document; import com.itextpdf.text.Paragraph; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/Application.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/Application.java similarity index 58% rename from xml-2/src/main/java/com/baeldung/xmlhtml/Application.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/Application.java index 063a833810..3216b208cc 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/Application.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/Application.java @@ -1,6 +1,6 @@ -package com.baeldung.xmlhtml; +package com.isharkfly.xmlhtml; -import com.baeldung.xmlhtml.helpers.XMLRunner; +import com.isharkfly.xmlhtml.helpers.XMLRunner; public class Application { diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/Constants.java similarity index 96% rename from xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/Constants.java index 88fc5637df..2df0a7c2ef 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/Constants.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/Constants.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml; +package com.isharkfly.xmlhtml; public class Constants { diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/freemarker/FreemarkerTransformer.java similarity index 94% rename from xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/freemarker/FreemarkerTransformer.java index 9e992699cc..0e635f8170 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformer.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/freemarker/FreemarkerTransformer.java @@ -1,6 +1,6 @@ -package com.baeldung.xmlhtml.freemarker; +package com.isharkfly.xmlhtml.freemarker; -import com.baeldung.xmlhtml.stax.StaxTransformer; +import com.isharkfly.xmlhtml.stax.StaxTransformer; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/helpers/XMLRunner.java similarity index 52% rename from xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/helpers/XMLRunner.java index f0fe308e38..98a712a4a0 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/XMLRunner.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/helpers/XMLRunner.java @@ -1,7 +1,7 @@ -package com.baeldung.xmlhtml.helpers; +package com.isharkfly.xmlhtml.helpers; -import com.baeldung.xmlhtml.helpers.jaxb.JAXBHelper; +import com.isharkfly.xmlhtml.helpers.jaxb.JAXBHelper; public class XMLRunner { diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/helpers/jaxb/JAXBHelper.java similarity index 83% rename from xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/helpers/jaxb/JAXBHelper.java index 740d5990b2..485e92e910 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/helpers/jaxb/JAXBHelper.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/helpers/jaxb/JAXBHelper.java @@ -1,18 +1,18 @@ -package com.baeldung.xmlhtml.helpers.jaxb; +package com.isharkfly.xmlhtml.helpers.jaxb; -import com.baeldung.xmlhtml.pojo.jaxb.html.ExampleHTML; -import com.baeldung.xmlhtml.pojo.jaxb.html.elements.Body; -import com.baeldung.xmlhtml.pojo.jaxb.html.elements.CustomElement; -import com.baeldung.xmlhtml.pojo.jaxb.html.elements.Meta; -import com.baeldung.xmlhtml.pojo.jaxb.html.elements.NestedElement; -import com.baeldung.xmlhtml.pojo.jaxb.xml.XMLExample; +import com.isharkfly.xmlhtml.pojo.jaxb.html.ExampleHTML; +import com.isharkfly.xmlhtml.pojo.jaxb.html.elements.Body; +import com.isharkfly.xmlhtml.pojo.jaxb.html.elements.CustomElement; +import com.isharkfly.xmlhtml.pojo.jaxb.html.elements.Meta; +import com.isharkfly.xmlhtml.pojo.jaxb.html.elements.NestedElement; +import com.isharkfly.xmlhtml.pojo.jaxb.xml.XMLExample; import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.Marshaller; import jakarta.xml.bind.Unmarshaller; import java.io.File; -import static com.baeldung.xmlhtml.Constants.*; +import static com.isharkfly.xmlhtml.Constants.*; public class JAXBHelper { diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/jaxp/JaxpTransformer.java similarity index 99% rename from xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/jaxp/JaxpTransformer.java index 3c288122a3..83d3aef2a8 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/jaxp/JaxpTransformer.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/jaxp/JaxpTransformer.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.jaxp; +package com.isharkfly.xmlhtml.jaxp; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/mustache/MustacheTransformer.java similarity index 90% rename from xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/mustache/MustacheTransformer.java index e449e74c3b..41c9b5f43b 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/mustache/MustacheTransformer.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/mustache/MustacheTransformer.java @@ -1,6 +1,6 @@ -package com.baeldung.xmlhtml.mustache; +package com.isharkfly.xmlhtml.mustache; -import com.baeldung.xmlhtml.stax.StaxTransformer; +import com.isharkfly.xmlhtml.stax.StaxTransformer; import com.github.mustachejava.DefaultMustacheFactory; import com.github.mustachejava.Mustache; import com.github.mustachejava.MustacheFactory; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/ExampleHTML.java similarity index 80% rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/ExampleHTML.java index 4ab9c31508..5971c27106 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/ExampleHTML.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/ExampleHTML.java @@ -1,7 +1,7 @@ -package com.baeldung.xmlhtml.pojo.jaxb.html; +package com.isharkfly.xmlhtml.pojo.jaxb.html; -import com.baeldung.xmlhtml.pojo.jaxb.html.elements.Body; -import com.baeldung.xmlhtml.pojo.jaxb.html.elements.Meta; +import com.isharkfly.xmlhtml.pojo.jaxb.html.elements.Body; +import com.isharkfly.xmlhtml.pojo.jaxb.html.elements.Meta; import jakarta.xml.bind.annotation.*; import java.util.ArrayList; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/Body.java similarity index 91% rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/Body.java index bc4486b927..0fcdd47c9c 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Body.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/Body.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.pojo.jaxb.html.elements; +package com.isharkfly.xmlhtml.pojo.jaxb.html.elements; import jakarta.xml.bind.annotation.XmlElement; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/CustomElement.java similarity index 82% rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/CustomElement.java index 7227843f61..2d9e2116d4 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/CustomElement.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/CustomElement.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.pojo.jaxb.html.elements; +package com.isharkfly.xmlhtml.pojo.jaxb.html.elements; import jakarta.xml.bind.annotation.XmlValue; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/Meta.java similarity index 89% rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/Meta.java index 9ae7bfea27..e074b09030 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/Meta.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/Meta.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.pojo.jaxb.html.elements; +package com.isharkfly.xmlhtml.pojo.jaxb.html.elements; import jakarta.xml.bind.annotation.XmlAttribute; import jakarta.xml.bind.annotation.XmlValue; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/NestedElement.java similarity index 86% rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/NestedElement.java index 0cd22f73df..ef1ec422b5 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/html/elements/NestedElement.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/html/elements/NestedElement.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.pojo.jaxb.html.elements; +package com.isharkfly.xmlhtml.pojo.jaxb.html.elements; import jakarta.xml.bind.annotation.XmlElement; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/XMLExample.java similarity index 78% rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/XMLExample.java index ef489ef643..4dbd324a32 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/XMLExample.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/XMLExample.java @@ -1,6 +1,6 @@ -package com.baeldung.xmlhtml.pojo.jaxb.xml; +package com.isharkfly.xmlhtml.pojo.jaxb.xml; -import com.baeldung.xmlhtml.pojo.jaxb.xml.elements.Ancestor; +import com.isharkfly.xmlhtml.pojo.jaxb.xml.elements.Ancestor; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlRootElement; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java similarity index 92% rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java index ab5e762b61..3309a401a9 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/Ancestor.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.pojo.jaxb.xml.elements; +package com.isharkfly.xmlhtml.pojo.jaxb.xml.elements; import jakarta.xml.bind.annotation.XmlElement; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java similarity index 82% rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java index f4b6ea99d5..31c3e5b96f 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/DescendantOne.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.pojo.jaxb.xml.elements; +package com.isharkfly.xmlhtml.pojo.jaxb.xml.elements; import jakarta.xml.bind.annotation.XmlValue; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java similarity index 82% rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java index fb81e26f01..1b9fc16c50 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/DescendantThree.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.pojo.jaxb.xml.elements; +package com.isharkfly.xmlhtml.pojo.jaxb.xml.elements; import jakarta.xml.bind.annotation.XmlValue; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java similarity index 87% rename from xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java index 19c337a142..7aa200d8a8 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/pojo/jaxb/xml/elements/DescendantTwo.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.pojo.jaxb.xml.elements; +package com.isharkfly.xmlhtml.pojo.jaxb.xml.elements; import jakarta.xml.bind.annotation.XmlElement; diff --git a/xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java b/xml-2/src/main/java/com/isharkfly/xmlhtml/stax/StaxTransformer.java similarity index 99% rename from xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java rename to xml-2/src/main/java/com/isharkfly/xmlhtml/stax/StaxTransformer.java index d7762f3c1f..7343da363f 100644 --- a/xml-2/src/main/java/com/baeldung/xmlhtml/stax/StaxTransformer.java +++ b/xml-2/src/main/java/com/isharkfly/xmlhtml/stax/StaxTransformer.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.stax; +package com.isharkfly.xmlhtml.stax; import javax.xml.stream.*; import java.io.FileInputStream; diff --git a/xml-2/src/main/resources/customer-binding.xml b/xml-2/src/main/resources/customer-binding.xml index c1a80366ef..f99be2deaa 100644 --- a/xml-2/src/main/resources/customer-binding.xml +++ b/xml-2/src/main/resources/customer-binding.xml @@ -1,24 +1,24 @@ - + - + - - + + - + diff --git a/xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java b/xml-2/src/test/java/com/isharkfly/xml/XMLDocumentWriterUnitTest.java similarity index 96% rename from xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xml/XMLDocumentWriterUnitTest.java index fba6d83d4f..7322ee061b 100644 --- a/xml-2/src/test/java/com/baeldung/xml/XMLDocumentWriterUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xml/XMLDocumentWriterUnitTest.java @@ -1,5 +1,6 @@ -package com.baeldung.xml; +package com.isharkfly.xml; +import com.isharkfly.xml.XMLDocumentWriter; import org.apache.commons.io.FileUtils; import org.junit.After; import org.junit.Test; diff --git a/xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java b/xml-2/src/test/java/com/isharkfly/xml/attribute/Dom4jProcessorUnitTest.java similarity index 96% rename from xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xml/attribute/Dom4jProcessorUnitTest.java index ae385fe62b..467a26efe0 100644 --- a/xml-2/src/test/java/com/baeldung/xml/attribute/Dom4jProcessorUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xml/attribute/Dom4jProcessorUnitTest.java @@ -1,5 +1,6 @@ -package com.baeldung.xml.attribute; +package com.isharkfly.xml.attribute; +import com.isharkfly.xml.attribute.Dom4jTransformer; import org.dom4j.DocumentException; import org.junit.jupiter.api.Test; import org.xml.sax.SAXException; diff --git a/xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java b/xml-2/src/test/java/com/isharkfly/xml/attribute/JaxpProcessorUnitTest.java similarity index 94% rename from xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xml/attribute/JaxpProcessorUnitTest.java index 46c954aee0..04d6cb2b47 100644 --- a/xml-2/src/test/java/com/baeldung/xml/attribute/JaxpProcessorUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xml/attribute/JaxpProcessorUnitTest.java @@ -1,5 +1,6 @@ -package com.baeldung.xml.attribute; +package com.isharkfly.xml.attribute; +import com.isharkfly.xml.attribute.JaxpTransformer; import org.junit.jupiter.api.Test; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; diff --git a/xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java b/xml-2/src/test/java/com/isharkfly/xml/attribute/JooxProcessorUnitTest.java similarity index 96% rename from xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xml/attribute/JooxProcessorUnitTest.java index 3a249e6dd7..3dc5a13343 100644 --- a/xml-2/src/test/java/com/baeldung/xml/attribute/JooxProcessorUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xml/attribute/JooxProcessorUnitTest.java @@ -1,5 +1,6 @@ -package com.baeldung.xml.attribute; +package com.isharkfly.xml.attribute; +import com.isharkfly.xml.attribute.JooxTransformer; import org.junit.jupiter.api.Test; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; diff --git a/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java b/xml-2/src/test/java/com/isharkfly/xml/invalidcharacters/InvalidCharactersUnitTest.java similarity index 98% rename from xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xml/invalidcharacters/InvalidCharactersUnitTest.java index 7878e72f97..3ca4036855 100644 --- a/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xml/invalidcharacters/InvalidCharactersUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.invalidcharacters; +package com.isharkfly.xml.invalidcharacters; import org.w3c.dom.Document; import org.xml.sax.InputSource; diff --git a/xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java b/xml-2/src/test/java/com/isharkfly/xml/jibx/CustomerUnitTest.java similarity index 96% rename from xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xml/jibx/CustomerUnitTest.java index 9a4b5bc14b..58af978645 100644 --- a/xml-2/src/test/java/com/baeldung/xml/jibx/CustomerUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xml/jibx/CustomerUnitTest.java @@ -1,5 +1,6 @@ -package com.baeldung.xml.jibx; +package com.isharkfly.xml.jibx; +import com.isharkfly.xml.jibx.Customer; import org.jibx.runtime.BindingDirectory; import org.jibx.runtime.IBindingFactory; import org.jibx.runtime.IUnmarshallingContext; diff --git a/xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java b/xml-2/src/test/java/com/isharkfly/xml/tohashmap/XmlToHashMapUnitTest.java similarity index 94% rename from xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xml/tohashmap/XmlToHashMapUnitTest.java index 437489f5e7..234a180f3f 100644 --- a/xml-2/src/test/java/com/baeldung/xml/tohashmap/XmlToHashMapUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xml/tohashmap/XmlToHashMapUnitTest.java @@ -1,11 +1,12 @@ -package com.baeldung.xml.tohashmap; +package com.isharkfly.xml.tohashmap; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.ArrayList; import java.util.Map; +import com.isharkfly.xml.tohashmap.Employee; +import com.isharkfly.xml.tohashmap.XmlToHashMap; import jakarta.xml.bind.JAXBException; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; diff --git a/xml-2/src/test/java/com/baeldung/xml/xml2csv/Xml2CsvExampleUnitTest.java b/xml-2/src/test/java/com/isharkfly/xml/xml2csv/Xml2CsvExampleUnitTest.java similarity index 98% rename from xml-2/src/test/java/com/baeldung/xml/xml2csv/Xml2CsvExampleUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xml/xml2csv/Xml2CsvExampleUnitTest.java index 181d284b2d..7bdfac403e 100644 --- a/xml-2/src/test/java/com/baeldung/xml/xml2csv/Xml2CsvExampleUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xml/xml2csv/Xml2CsvExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.xml.xml2csv; +package com.isharkfly.xml.xml2csv; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -18,6 +18,7 @@ import java.util.concurrent.Executors; import javax.xml.transform.TransformerException; +import com.isharkfly.xml.xml2csv.Xml2CsvExample; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; diff --git a/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java b/xml-2/src/test/java/com/isharkfly/xml/xml2document/XMLStringToDocumentObjectUnitTest.java similarity index 94% rename from xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xml/xml2document/XMLStringToDocumentObjectUnitTest.java index 9d658b2152..2d1b6cce3c 100644 --- a/xml-2/src/test/java/com/baeldung/xml/xml2document/XMLStringToDocumentObjectUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xml/xml2document/XMLStringToDocumentObjectUnitTest.java @@ -1,37 +1,37 @@ -package com.baeldung.xml.xml2document; - -import org.junit.Test; -import org.w3c.dom.*; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import java.io.IOException; -import java.io.StringReader; - -import static org.junit.Assert.assertEquals; - -public class XMLStringToDocumentObjectUnitTest { - @Test - public void givenValidXMLString_whenParsing_thenDocumentIsCorrect() throws ParserConfigurationException { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - String xmlString = "XML Parsing Example"; - InputSource is = new InputSource(new StringReader(xmlString)); - Document xmlDoc = null; - try { - xmlDoc = builder.parse(is); - } catch (SAXException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } - - assertEquals("root", xmlDoc.getDocumentElement().getNodeName()); - assertEquals("element", xmlDoc.getDocumentElement().getElementsByTagName("element").item(0).getNodeName()); - assertEquals("XML Parsing Example", xmlDoc.getDocumentElement().getElementsByTagName("element").item(0).getTextContent()); - } -} +package com.isharkfly.xml.xml2document; + +import org.junit.Test; +import org.w3c.dom.*; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import java.io.IOException; +import java.io.StringReader; + +import static org.junit.Assert.assertEquals; + +public class XMLStringToDocumentObjectUnitTest { + @Test + public void givenValidXMLString_whenParsing_thenDocumentIsCorrect() throws ParserConfigurationException { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + String xmlString = "XML Parsing Example"; + InputSource is = new InputSource(new StringReader(xmlString)); + Document xmlDoc = null; + try { + xmlDoc = builder.parse(is); + } catch (SAXException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + + assertEquals("root", xmlDoc.getDocumentElement().getNodeName()); + assertEquals("element", xmlDoc.getDocumentElement().getElementsByTagName("element").item(0).getNodeName()); + assertEquals("XML Parsing Example", xmlDoc.getDocumentElement().getElementsByTagName("element").item(0).getTextContent()); + } +} diff --git a/xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java b/xml-2/src/test/java/com/isharkfly/xml/xml2pdf/XmlToPdfConverterUnitTest.java similarity index 94% rename from xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xml/xml2pdf/XmlToPdfConverterUnitTest.java index 6d4a4f8bda..cb77f43b3c 100644 --- a/xml-2/src/test/java/com/baeldung/xml/xml2pdf/XmlToPdfConverterUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xml/xml2pdf/XmlToPdfConverterUnitTest.java @@ -1,5 +1,6 @@ -package com.baeldung.xml.xml2pdf; +package com.isharkfly.xml.xml2pdf; +import com.isharkfly.xml.xml2pdf.XmlToPdfConverter; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java b/xml-2/src/test/java/com/isharkfly/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java similarity index 98% rename from xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java rename to xml-2/src/test/java/com/isharkfly/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java index b05123cbdc..0e746bb447 100644 --- a/xml-2/src/test/java/com/baeldung/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java +++ b/xml-2/src/test/java/com/isharkfly/xmlhtml/delhtmltags/RemoveHtmlTagsLiveTest.java @@ -1,4 +1,4 @@ -package com.baeldung.xmlhtml.delhtmltags; +package com.isharkfly.xmlhtml.delhtmltags; import net.htmlparser.jericho.Renderer; import net.htmlparser.jericho.Segment; diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java b/xml-2/src/test/java/com/isharkfly/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java similarity index 87% rename from xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java index c110f88e99..a2e31bedfc 100644 --- a/xml-2/src/test/java/com/baeldung/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xmlhtml/freemarker/FreemarkerTransformerUnitTest.java @@ -1,6 +1,7 @@ -package com.baeldung.xmlhtml.freemarker; +package com.isharkfly.xmlhtml.freemarker; -import com.baeldung.xmlhtml.stax.StaxTransformer; +import com.isharkfly.xmlhtml.freemarker.FreemarkerTransformer; +import com.isharkfly.xmlhtml.stax.StaxTransformer; import freemarker.template.TemplateException; import org.junit.jupiter.api.Test; diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java b/xml-2/src/test/java/com/isharkfly/xmlhtml/jaxp/JaxpTransformerUnitTest.java similarity index 92% rename from xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xmlhtml/jaxp/JaxpTransformerUnitTest.java index 02fc422ee9..517315f103 100644 --- a/xml-2/src/test/java/com/baeldung/xmlhtml/jaxp/JaxpTransformerUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xmlhtml/jaxp/JaxpTransformerUnitTest.java @@ -1,5 +1,6 @@ -package com.baeldung.xmlhtml.jaxp; +package com.isharkfly.xmlhtml.jaxp; +import com.isharkfly.xmlhtml.jaxp.JaxpTransformer; import org.junit.jupiter.api.Test; import org.xml.sax.SAXException; diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java b/xml-2/src/test/java/com/isharkfly/xmlhtml/mustache/MustacheTransformerUnitTest.java similarity index 86% rename from xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xmlhtml/mustache/MustacheTransformerUnitTest.java index b53a23d4fb..795bd14b98 100644 --- a/xml-2/src/test/java/com/baeldung/xmlhtml/mustache/MustacheTransformerUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xmlhtml/mustache/MustacheTransformerUnitTest.java @@ -1,6 +1,7 @@ -package com.baeldung.xmlhtml.mustache; +package com.isharkfly.xmlhtml.mustache; -import com.baeldung.xmlhtml.stax.StaxTransformer; +import com.isharkfly.xmlhtml.mustache.MustacheTransformer; +import com.isharkfly.xmlhtml.stax.StaxTransformer; import org.junit.jupiter.api.Test; import javax.xml.stream.XMLStreamException; diff --git a/xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java b/xml-2/src/test/java/com/isharkfly/xmlhtml/stax/StaxTransformerUnitTest.java similarity index 91% rename from xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java rename to xml-2/src/test/java/com/isharkfly/xmlhtml/stax/StaxTransformerUnitTest.java index efb2edc7a3..8b8de029e8 100644 --- a/xml-2/src/test/java/com/baeldung/xmlhtml/stax/StaxTransformerUnitTest.java +++ b/xml-2/src/test/java/com/isharkfly/xmlhtml/stax/StaxTransformerUnitTest.java @@ -1,5 +1,6 @@ -package com.baeldung.xmlhtml.stax; +package com.isharkfly.xmlhtml.stax; +import com.isharkfly.xmlhtml.stax.StaxTransformer; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test;