1

我有这样的方法。

public void myMethod(String xml){
   ...

   File file=convertStringToFile(xml)  // I need to convert xml string to File
   object.fileDemandingMethod(file);

}

fileDemandingMethod(file) 期待 File 但我的输入是字符串。

如何以 File 对象的形式获取我的 xml 字符串?

我需要这个来进行 JAXB 验证

Schema schema = schemaFactory.newSchema(new File("C:\\schema.xsd"));
unmarshaller.setSchema(schema );
4

3 回答 3

2

由于您也可以使用 a ,因此您可以从withStreamSource构造 a :javax.xml.transform.SourceString

new StreamSource(new StringReader(xml))
于 2013-02-11T06:42:36.220 回答
1

您不需要文件,您肯定不希望写入文件的开销。

setSchema() 可以接受任何实现 javax.xml.transform.Source 的对象

StreamSource就是这样一个类,可以从 InputStream 或 Reader 构造。

 Reader reader = new StringReader(myString);
 Source source = new StreamSource(reader);
 unmarshaller.setSchema(spource);
于 2013-02-11T06:43:14.527 回答
0

最好的方法是从您的模式 (C:\Schema.xsd) 中创建/生成一个类,例如 Employee

之后剩下的就简单了

JAXBContext context = JAXBContext.newInstance(Employee.class);

    Marshaller m = context.createMarshaller();
    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

    Employee object = new Employee();
    object.setCode("CA");
    object.setName("Cath");
    object.setSalary(300);

    m.marshal(object, new FileOutputStream("result.xml"));

  }
于 2013-02-11T06:30:58.983 回答