我需要从 DAM 中获取用户上传的 XML 文件,解析该文件并将内容存储在 JCR 中。这是我到目前为止所拥有的
public class foo implements Runnable {
private static final Logger log = LoggerFactory
.getLogger(foo.class);
@Reference
ResourceResolverFactory resourceResolverFactory;
@Reference
ResourceProvider resourceProvider;
ResourceResolver resourceResolver = null;
@Reference
SlingRepository repository;
Session session;
// private static ReadXMLFileUsingDomparserTest readxml;
File tempFile;
public void run(){
log.info("\n *** Seems okay ***\n");
ResourceResolver resourceResolver = null;
try {
resourceResolver = resourceResolverFactory.getAdministrativeResourceResolver(null);
Resource resource = resourceResolver.getResource("/content/dam/foo/file.xml");
Node node = resource.adaptTo(Node.class);
boolean isAssest = DamUtil.isAsset(resource);
if (isAssest) {
Asset asset = resource.adaptTo(Asset.class);
List<Rendition> rendition = asset.getRenditions();
for (Rendition re : rendition) {
InputStream in = re.getStream();
File xmlFile = copy(in,tempFile);
if(filetest.exists()){
ReadXMLFileUsingDomparserTest.parseXML(filetest,null);
}else {
log.info("File not found at all");
}
}
}
File xmlFile = copy(in,tempFile);*/
}catch (Exception e) {
log.error("Exception while running foo" , e);
}
}
private File copy(InputStream in, File file) {
try {
OutputStream out = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
return file;
}
}
尽管我能够正确获取 Node 对象(这样做Node.getPath()
会返回正确的路径),但我无法将此节点转换为 File 对象。(无法改编)。我想以 File 对象的形式访问它以进行解析。这就是为什么我浏览资产的再现并使用流将其复制到文件中的原因。
但是,对于上述代码,这始终显示为 null;输出总是File not found at all
.
从 DAM 获取具有必要数据的 File 对象以便我可以成功解析它的正确方法是什么?