hallo!
ich habe folgendes problem:
ich möchte aus einer XML datei mittels einer XPath Abfrage und JDOM, Elemente heraus holen...
XML-Datei:
meine klasse MetsObject:
und meine testklasse
Normalerweise sollte er "Bovet, Theodor" ausgeben.
tut er aber nicht, er gibt stattdessen "[Text: Bovet, Theodor]" aus!!
wie komme ich auf den wert "Bovet, Theodor".
ich habe schon bei jdom.org-Documentation nachgeschlagen, und ich glaube die Lösung liegt bei einem org.jdom.filter.ContentFilter ....
könnt ihr mir weiterhelfen???
ich habe folgendes problem:
ich möchte aus einer XML datei mittels einer XPath Abfrage und JDOM, Elemente heraus holen...
XML-Datei:
Code:
<METS:mets xmlns:METS="http://www.loc.gov/METS/">
<dmdSec ID="DCMD_ELEC">
<mdWrap MIMETYPE="text/xml" MDTYPE="DC">
<xmldata>
<dc:creator xmlns:dc="http://purl.org/dc/elements/1.0/">Bovet, Theodor</dc:creator>
<dc:title xmlns:dc="http://purl.org/dc/elements/1.0/">Von Mann zu Mann</dc:title>
<dc:title xmlns:dc="http://purl.org/dc/elements/1.0/">Reifezeit</dc:title>
<dc:title xmlns:dc="http://purl.org/dc/elements/1.0/">Vom Werden des Menschen</dc:title>
<dc:title xmlns:dc="http://purl.org/dc/elements/1.0/">Vom männlichen Charakter</dc:title>
<dc:title xmlns:dc="http://purl.org/dc/elements/1.0/">Von Meisterung und Verdrängung</dc:title>
<dc:title xmlns:dc="http://purl.org/dc/elements/1.0/">Von den Mädchen</dc:title>
<dc:title xmlns:dc="http://purl.org/dc/elements/1.0/">Klare Sicht</dc:title>
<dc:title xmlns:dc="http://purl.org/dc/elements/1.0/">Nachkommenschaft</dc:title>
<dc:title xmlns:dc="http://purl.org/dc/elements/1.0/">Was man auch noch wissen muss</dc:title>
<dc:title xmlns:dc="http://purl.org/dc/elements/1.0/">Freiheit</dc:title>
</xmldata>
</mdWrap>
</dmdSec>
</mets>
meine klasse MetsObject:
Code:
import java.io.*;
import java.io.IOException;
import java.util.List;
import org.jdom.*;
import org.jdom.xpath.*;
import org.jdom.input.*;
import org.jdom.output.*;
import org.xml.sax.SAXParseException;
import org.jaxen.jdom.JDOMXPath;
public class MetsObject
{
public static Document document;
public void parse (String path)
{
try {
SAXBuilder saxbuilder = new SAXBuilder();
saxbuilder.setIgnoringElementContentWhitespace(false);
saxbuilder.setValidation(false);
saxbuilder.setReuseParser(false);
document = saxbuilder.build(new File(path));
} catch (IOException e) {
e.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public Object[] get_GRP( String abfrage )
{
try
{
XPath x = XPath.newInstance( abfrage );
List ls = x.selectNodes( document );
if ( ls.isEmpty() | (ls.size()==0) )
{
return null;
}
else
{
return (Object[]) ls.toArray();
}
}
catch (JDOMException ex)
{
ex.getMessage();
return null;
}
catch (ArrayIndexOutOfBoundsException ex)
{
ex.printStackTrace();
return null;
}
}
else
{
return null;
}
}
}
und meine testklasse
Code:
public class testklasse
{
public static void main(String[] args)
{
String query = new String("//dmdSec[@ID='DCMD_ELEC']/mdWrap/xmldata/node()/text()");
MetsObject mo = new MetsObject();
mo.parse("C:\mets.xml");
Object[] ob = new Object[mo.get_GRP( query ).length];
ob = mo.get_GRP( query );
System.out.println( ob[0].toString() );
}
}
Normalerweise sollte er "Bovet, Theodor" ausgeben.
tut er aber nicht, er gibt stattdessen "[Text: Bovet, Theodor]" aus!!
wie komme ich auf den wert "Bovet, Theodor".
ich habe schon bei jdom.org-Documentation nachgeschlagen, und ich glaube die Lösung liegt bei einem org.jdom.filter.ContentFilter ....
könnt ihr mir weiterhelfen???