Masipulami
Grünschnabel
Hi zusammen,
hier mal ein kleiner Ausschnitt aus meinem Programm:
Und hier mal ein Beispiel für eine confirmation.xml, die erstellt und mit Hilfe von XPath wie oben beschrieben geparsed werden muss:
Das komische ist, dass wenn ich exakt den gleichen XPath-Ausdruck mit XML-Spy teste, ich auch den gewünschten Knoten erhalte.
Ach ja, ich nutze Java 1.4 (geht auf Arbeit nicht anders) und DOM4J 1.6.1.
Viele Grüße,
Masipulami
hier mal ein kleiner Ausschnitt aus meinem Programm:
Code:
private Document createConfirmationXML(String generatePDF, String validatePrev, String createdFlag, String statusMessage)
{
if (xmlConfirmationDoc == null) // first creation of confirmation Doc
{
xmlConfirmationDoc = DocumentFactory.getInstance().createDocument();
confirmation = xmlConfirmationDoc.addElement("confirmation").addAttribute("generate_pdf", generatePDF).addAttribute("week", week).addAttribute("validate_prev", validatePrev)
.addAttribute("xsi:noNamespaceSchemaLocation", "confirmations.xsd");
confirmation.add(new org.dom4j.Namespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"));
confPrev = confirmation.addElement("prevision").addAttribute("id", prevId).addAttribute("created", createdFlag);
confPrev.addElement("status").addText(statusMessage);
}
else // in case confirmation doc already exists
{
// it has to be checked if there is already a <prevision> element for the given prevId
Map uris = new HashMap();
uris.put("xsi", "http://www.w3.org/2001/XMLSchema-instance");
XPath xpath = xmlConfirmationDoc.createXPath("/confirmation/prevision[@id='" + prevId + "']");
xpath.setNamespaceURIs(uris);
List results = xpath.selectNodes(xmlConfirmationDoc);
if (results.size() == 0) // <prevision> element does not already exist for the given prevId
{
confPrev = confirmation.addElement("prevision").addAttribute("id", prevId).addAttribute("created", createdFlag);
confPrev.addElement("status").addText(statusMessage);
}
else // <prevision> element already exists for the given prevId
{
for (Iterator iterator = results.iterator(); iterator.hasNext();)
{
Element confPrevision = (Element)iterator.next();
confPrevision.addElement("status").addText(statusMessage);
}
}
}
return xmlConfirmationDoc;
}
Und hier mal ein Beispiel für eine confirmation.xml, die erstellt und mit Hilfe von XPath wie oben beschrieben geparsed werden muss:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<confirmation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" generate_pdf="true" week="2007-10-28" validate_prev="true" xsi:noNamespaceSchemaLocation="confirmations.xsd">
<prevision id="L_2007123" created="true">
<status>existing prevision modified successfully</status>
</prevision>
<prevision id="L_2007124" created="true">
<status>existing prevision modified successfully</status>
</prevision>
</confirmation>
Das komische ist, dass wenn ich exakt den gleichen XPath-Ausdruck mit XML-Spy teste, ich auch den gewünschten Knoten erhalte.
Ach ja, ich nutze Java 1.4 (geht auf Arbeit nicht anders) und DOM4J 1.6.1.
Viele Grüße,
Masipulami