Hallo zusammen,
ich habe folgendes Problem.
Eine XML Datei soll eingelesen werden, Elemente sollen daraus entfernt werden und
anschließend möchte ich das verkleinerte Ergebnis an den Transformator zurückgeben.
Bis zu dem Teil mit dem Elemente aus der XML entfernen bin ich schon gekommen. Zumindest kann ich mir die gewünschten Elemente ausgeben lassen.
[HIGHLIGHT="Java"]public static final Source getResultXML(URL url) {
System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "net.sf.saxon.dom.DocumentBuilderFactoryImpl");
try {
XPath xpath = net.sf.saxon.xpath.XPathFactoryImpl.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON).newXPath();
InputSource inputSrc = new InputSource(url.openStream());
SAXSource saxSrc = new SAXSource(inputSrc);
NodeInfo nodeInfo = ((XPathEvaluator) xpath).setSource(saxSrc);
XPathExpression findElement = xpath.compile("//ELEMENTE//ELEMENT[@id=7048]");
List matchedElements = (List) findElement.evaluate(nodeInfo, XPathConstants.NODESET);
if(matchedElements != null) {
for(Iterator iterator = matchedElements.iterator(); iterator.hasNext() {
NodeInfo line = (NodeInfo) iterator.next();
/*Node node = line.item(0);
node.getParentNode().removeChild(node);*/
}
}
return saxSrc;
}
catch(IOException e) {
e.printStackTrace();
}
catch(XPathFactoryConfigurationException e) {
e.printStackTrace();
}
catch(XPathExpressionException e) {
e.printStackTrace();
}
catch(XPathException e) {
e.printStackTrace();
}
catch(ClassCastException e) {
e.printStackTrace();
}
}[/HIGHLIGHT]
[HIGHLIGHT="Java"]Source xmlSrc = XMLs.getResultXML(xmlURL);
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer transformer = tfactory.newTransformer(new StreamSource(xslFile));
transformer.transform(xmlSrc), new StreamResult(out));[/HIGHLIGHT]
Bin ich auf dem richtigen Weg?
Und wie übergebe ich das Ergebnis an den Transformator?
Danke und Grüße
Zero
ich habe folgendes Problem.
Eine XML Datei soll eingelesen werden, Elemente sollen daraus entfernt werden und
anschließend möchte ich das verkleinerte Ergebnis an den Transformator zurückgeben.
Bis zu dem Teil mit dem Elemente aus der XML entfernen bin ich schon gekommen. Zumindest kann ich mir die gewünschten Elemente ausgeben lassen.
[HIGHLIGHT="Java"]public static final Source getResultXML(URL url) {
System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "net.sf.saxon.dom.DocumentBuilderFactoryImpl");
try {
XPath xpath = net.sf.saxon.xpath.XPathFactoryImpl.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON).newXPath();
InputSource inputSrc = new InputSource(url.openStream());
SAXSource saxSrc = new SAXSource(inputSrc);
NodeInfo nodeInfo = ((XPathEvaluator) xpath).setSource(saxSrc);
XPathExpression findElement = xpath.compile("//ELEMENTE//ELEMENT[@id=7048]");
List matchedElements = (List) findElement.evaluate(nodeInfo, XPathConstants.NODESET);
if(matchedElements != null) {
for(Iterator iterator = matchedElements.iterator(); iterator.hasNext() {
NodeInfo line = (NodeInfo) iterator.next();
/*Node node = line.item(0);
node.getParentNode().removeChild(node);*/
}
}
return saxSrc;
}
catch(IOException e) {
e.printStackTrace();
}
catch(XPathFactoryConfigurationException e) {
e.printStackTrace();
}
catch(XPathExpressionException e) {
e.printStackTrace();
}
catch(XPathException e) {
e.printStackTrace();
}
catch(ClassCastException e) {
e.printStackTrace();
}
}[/HIGHLIGHT]
[HIGHLIGHT="Java"]Source xmlSrc = XMLs.getResultXML(xmlURL);
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer transformer = tfactory.newTransformer(new StreamSource(xslFile));
transformer.transform(xmlSrc), new StreamResult(out));[/HIGHLIGHT]
Bin ich auf dem richtigen Weg?
Und wie übergebe ich das Ergebnis an den Transformator?
Danke und Grüße
Zero