diff options
Diffstat (limited to 'src/main/java/com/c2kernel/utils')
| -rw-r--r-- | src/main/java/com/c2kernel/utils/CastorXMLUtility.java | 2 | ||||
| -rw-r--r-- | src/main/java/com/c2kernel/utils/XmlElementParser.java | 172 |
2 files changed, 87 insertions, 87 deletions
diff --git a/src/main/java/com/c2kernel/utils/CastorXMLUtility.java b/src/main/java/com/c2kernel/utils/CastorXMLUtility.java index 497f934..e8e3ee4 100644 --- a/src/main/java/com/c2kernel/utils/CastorXMLUtility.java +++ b/src/main/java/com/c2kernel/utils/CastorXMLUtility.java @@ -99,7 +99,7 @@ public class CastorXMLUtility mappingContext.setClassLoader(defaultClassLoader);
// if the aAppProperties contains castor properties then
- if (aAppProperties.containsKey(CASTOR_XML_SERIALIZER_FACTORY)) {
+ if (aAppProperties!= null && aAppProperties.containsKey(CASTOR_XML_SERIALIZER_FACTORY)) {
mappingContext.setProperty(CASTOR_XML_SERIALIZER_FACTORY,
aAppProperties
diff --git a/src/main/java/com/c2kernel/utils/XmlElementParser.java b/src/main/java/com/c2kernel/utils/XmlElementParser.java index 2e86763..7601731 100644 --- a/src/main/java/com/c2kernel/utils/XmlElementParser.java +++ b/src/main/java/com/c2kernel/utils/XmlElementParser.java @@ -6,6 +6,7 @@ import java.util.Vector; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -13,93 +14,92 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
-public class XmlElementParser
-{
- public static String[] parse(String data, String xpath)
- {
- Vector<String> returnData = new Vector<String>();
- String[] returnArray = new String[0];
- try
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
- StringReader is = new StringReader(data);
- Document doc = builder.parse(new InputSource(is));
- StringTokenizer pathTokens = new StringTokenizer(xpath, "/");
- int taille = pathTokens.countTokens();
- String[] pathElements = new String[taille];
- int i=taille;
- while (pathTokens.hasMoreElements())
- pathElements[--i] = pathTokens.nextToken();
+public class XmlElementParser {
+ public static String[] parse(String data, String xpath) {
+ Vector<String> returnData = new Vector<String>();
+ String[] returnArray = new String[0];
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder;
+ try {
+ builder = factory.newDocumentBuilder();
+ } catch (ParserConfigurationException e) {
+ Logger.error(e);
+ throw new RuntimeException("Could not create XML Document Builder");
+ }
+ StringReader is = new StringReader(data);
+ Document doc;
+ try {
+ doc = builder.parse(new InputSource(is));
+ } catch (Exception e) {
+ Logger.error(e);
+ throw new RuntimeException("Parser malfunction");
+ }
+ StringTokenizer pathTokens = new StringTokenizer(xpath, "/");
+ int taille = pathTokens.countTokens();
+ String[] pathElements = new String[taille];
+ int i = taille;
+ while (pathTokens.hasMoreElements())
+ pathElements[--i] = pathTokens.nextToken();
- if (Logger.doLog(6)) {
- Logger.msg(6, "Path elements:");
- for (String pathElement : pathElements)
- Logger.debug(6, pathElement);
- }
+ if (Logger.doLog(6)) {
+ Logger.msg(6, "Path elements:");
+ for (String pathElement : pathElements)
+ Logger.debug(6, pathElement);
+ }
- Logger.msg(6, "Looking for attribute "+pathElements[0]+" in "+pathElements[1]);
- NodeList nl = doc.getElementsByTagName(pathElements[1]);
- for (int j = 0; j < nl.getLength(); j++)
- {
- Logger.msg(6, "Found one");
- Element e = (Element)nl.item(j);
- boolean match=true;
- Node child=e;
- for (int k=2;k<taille&&match;k++)
- {
- Logger.msg(6, "Checking parent "+pathElements[k]);
- child = child.getParentNode();
- if (!child.getNodeName().equals(pathElements[k]))
- {
- Logger.msg(6, "No match for "+child.getNodeName());
- match=false;
- }
- else
- Logger.msg(6, "Match");
- }
- if (match&&e.hasAttribute(pathElements[0])) {
- Logger.msg(6, "Matching Attribute "+pathElements[0]+"="+e.getAttribute(pathElements[0]));
- returnData.add(e.getAttribute(pathElements[0]));
- }
- }
+ Logger.msg(6, "Looking for attribute " + pathElements[0] + " in "
+ + pathElements[1]);
+ NodeList nl = doc.getElementsByTagName(pathElements[1]);
+ for (int j = 0; j < nl.getLength(); j++) {
+ Logger.msg(6, "Found one");
+ Element e = (Element) nl.item(j);
+ boolean match = true;
+ Node child = e;
+ for (int k = 2; k < taille && match; k++) {
+ Logger.msg(6, "Checking parent " + pathElements[k]);
+ child = child.getParentNode();
+ if (!child.getNodeName().equals(pathElements[k])) {
+ Logger.msg(6, "No match for " + child.getNodeName());
+ match = false;
+ } else
+ Logger.msg(6, "Match");
+ }
+ if (match && e.hasAttribute(pathElements[0])) {
+ Logger.msg(
+ 6,
+ "Matching Attribute " + pathElements[0] + "="
+ + e.getAttribute(pathElements[0]));
+ returnData.add(e.getAttribute(pathElements[0]));
+ }
+ }
- Logger.msg(6, "Looking for element "+pathElements[0]);
- nl = doc.getElementsByTagName(pathElements[0]);
- for (int j = 0; j < nl.getLength(); j++)
- {
- Logger.msg(6, "Found one");
- Element e = (Element)nl.item(j);
- boolean match=true;
- Node child=e;
- for (int k=1;k<taille&&match;k++)
- {
- Logger.msg(6, "Checking parent "+pathElements[k]);
- child = child.getParentNode();
- if (!child.getNodeName().equals(pathElements[k]))
- {
- Logger.msg(6, "No match for "+child.getNodeName());
- match=false;
- }
- else
- Logger.msg(6, "Match");
- }
- if (match)
- {
- String s =e.getFirstChild().getNodeValue();
- Logger.msg(6, "Found Element "+pathElements[0]+"="+s);
- if (s!=null) returnData.add(s);
- }
- }
- }
- catch (Exception e)
- {
- //Logger.error(e);
- }
- Logger.msg(3, returnData.size()+" values found for "+xpath);
- returnArray=new String[returnData.size()];
- for (int i=0;i<returnArray.length;i++)
- returnArray[i] = returnData.get(i);
- return returnArray;
- }
+ Logger.msg(6, "Looking for element " + pathElements[0]);
+ nl = doc.getElementsByTagName(pathElements[0]);
+ for (int j = 0; j < nl.getLength(); j++) {
+ Logger.msg(6, "Found one");
+ Element e = (Element) nl.item(j);
+ boolean match = true;
+ Node child = e;
+ for (int k = 1; k < taille && match; k++) {
+ Logger.msg(6, "Checking parent " + pathElements[k]);
+ child = child.getParentNode();
+ if (!child.getNodeName().equals(pathElements[k])) {
+ Logger.msg(6, "No match for " + child.getNodeName());
+ match = false;
+ } else
+ Logger.msg(6, "Match");
+ }
+ if (match) {
+ String s = e.getFirstChild().getNodeValue();
+ Logger.msg(6, "Found Element " + pathElements[0] + "=" + s);
+ if (s != null)
+ returnData.add(s);
+ }
+ }
+ Logger.msg(3, returnData.size() + " values found for " + xpath);
+ returnArray = new String[returnData.size()];
+ for (int j = 0; j < returnArray.length; j++)
+ returnArray[j] = returnData.get(j);
+ return returnArray;
+ }
}
|
