Je veux convertir une OutputStream
en un objet String
. Un objet OutputStream
est renvoyé après le regroupement de l'objet JAXB.
pas très familier avec jaxb, à partir de ce que j'ai pu trouver, vous pouvez convertir en chaîne en utilisant
public String asString(JAXBContext pContext,
Object pObject)
throws
JAXBException {
Java.io.StringWriter sw = new StringWriter();
Marshaller marshaller = pContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.marshal(pObject, sw);
return sw.toString();
}
mais je ne suis pas sûr d'un objet émouvant. toujours à la recherche.
** MODIFIER
Marshalling un non-élément
Un autre cas d'utilisation courant est celui où vous avoir un objet qui n'a pas @XmlRootElement dessus. JAXB vous permet pour le marshal comme ceci:
marshaller.marshal (nouveau JAXBElement (
Nouveau QName ("", "rootTag"), Point.class, new Point(...)));Cela met l'élément en tant que élément racine, suivi du contenu de l'objet, alors. Vous peut réellement l'utiliser avec une classe qui a @XmlRootElement, et cela simplement renomme le nom de l'élément racine.
Au premier regard le second Le paramètre Point.class peut ressembler redondant, mais c'est en fait nécessaire pour déterminer si le commissaire sera produire (infâme) @xsi: type. Dans ce Par exemple, la classe et le exemple sont Point, vous ne verrez donc pas @xsi: type. Mais si elles sont différentes, vous le verrez.
Ceci peut également être utilisé pour rassembler un objet simple, comme String ou un entier.
marshaller.marshal (nouveau JAXBElement (
Nouveau QName ("", "rootTag"), String.class, "foo Bar"));Mais malheureusement, il ne peut pas être utilisé pour Marquer des objets comme Liste ou Carte, en tant que ils ne sont pas traités comme de première classe citoyen du monde JAXB.
trouvé ICI
StringWriter sw = new StringWriter();
com.integra.xml.Integracao integracao = new Integracao();
integracao.add(...);
try {
JAXBContext context = JAXBContext.newInstance("com.integra.xml");
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(integracao, sw );
System.out.println(sw.toString());
} catch (JAXBException e) {
e.printStackTrace();
}
public String readFile(String pathname) throws IOException {
File file = new File(pathname);
StringBuilder fileContents = new StringBuilder((int) file.length());
Scanner scanner = new Scanner(file);
String lineSeparator = System.getProperty("line.separator");
try {
while (scanner.hasNextLine()) {
fileContents.append(scanner.nextLine() + lineSeparator);
}
return fileContents.toString();
}
finally {
scanner.close();
}
}
Méthode permettant de gérer le XML et de le convertir en chaîne.
JAXBContext jc = JAXBContext.newInstance(ClassMatchingStartofXMLTags.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
//store filepath to be used
String filePath = "YourXMLFile.xml";
File xmlFile = new File(filePath);
//Set up xml Marshaller
ClassMatchingStartofXMLTags xmlMarshaller = (ClassMatchingStartofXMLTags) unmarshaller.unmarshal(xmlFileEdit);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
// Use marshall to output the contents of the xml file
System.out.println("Marshalled XML\n");
marshaller.marshal(xmlMarshaller, System.out);
//Use Readfile method to convert the XML to a string and output the results
System.out.println("\nXML to String");
String strFile = ReadFile(xmlFile)
System.out.println(strFile);
Méthode au sein de votre classe pour obtenir le XML et le Marshall Edition La méthode ci-dessus générera à la fois le XML marshalled et le XML comme chaîne.