From 2e6f7c3a5fab1735022dc28458c7c8972a35bbd3 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Thu, 17 Jun 2021 22:33:25 +0200 Subject: [PATCH] [DEV] load from java generic PAth --- src/org/atriasoft/exml/Exml.java | 45 ++++++++++++++++++++++- src/org/atriasoft/exml/model/XmlNode.java | 2 +- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/org/atriasoft/exml/Exml.java b/src/org/atriasoft/exml/Exml.java index 707b90a..eda31cd 100644 --- a/src/org/atriasoft/exml/Exml.java +++ b/src/org/atriasoft/exml/Exml.java @@ -6,7 +6,14 @@ package org.atriasoft.exml; +import java.io.File; +import java.io.IOException; import java.lang.reflect.Array; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.List; import org.atriasoft.etk.Uri; @@ -81,6 +88,22 @@ public class Exml { } return null; } + private static String readFile(Path path, Charset encoding) throws IOException + { + byte[] encoded = Files.readAllBytes(path); + return new String(encoded, encoding); + } + + public static T[] parse(final Path path, final Class classType, final String rootNodeName) throws ExmlBuilderException, ExmlParserErrorMulti { + String content = null; + try { + content = readFile(path, StandardCharsets.UTF_8); + } catch (IOException e) { + e.printStackTrace(); + } + return parse(content, classType, rootNodeName); + } + /** * Load the file that might contain the xml @@ -99,7 +122,7 @@ public class Exml { * the file: fileIo->close(); // parse the data: boolean ret = * parse(tmpDataUnicode); //Display(); return ret; } */ - + public static XmlElement parse(final Uri data) throws ExmlBuilderException, ExmlParserErrorMulti { final Builder builder = new BuilderGeneric(); final ParseXml parser = new ParseXml(builder); @@ -114,6 +137,26 @@ public class Exml { final String dataToParse = new String(elemData); return (XmlElement) parser.parse(dataToParse, property); } + public static XmlElement parse(final Path data) throws ExmlBuilderException, ExmlParserErrorMulti { + final Builder builder = new BuilderGeneric(); + final ParseXml parser = new ParseXml(builder); + final ParsingProperty property = new ParsingProperty(); + property.setDisplayError(true); + byte[] elemData = null; + try { + elemData = Files.readAllBytes(data); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if (elemData == null) { + Log.error("Can not read the Stream : " + data); + Log.displayBackTrace(); + return null; + } + final String dataToParse = new String(elemData); + return (XmlElement) parser.parse(dataToParse, property); + } /** * Store the Xml in the file diff --git a/src/org/atriasoft/exml/model/XmlNode.java b/src/org/atriasoft/exml/model/XmlNode.java index 4da9253..1a21a49 100644 --- a/src/org/atriasoft/exml/model/XmlNode.java +++ b/src/org/atriasoft/exml/model/XmlNode.java @@ -44,7 +44,7 @@ public abstract class XmlNode { public abstract XmlNodeType getType(); /** - * Get the current element Value. + * Get the current element Value (value in the XML tag . * @return the reference of the string value. */ public String getValue() {