Я использую Saxon парсер, чтобы разделить большой файл на более мелкие. Ниже мой пример кода,Java Saxon Parsing
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory
.newTransformer(new StreamSource(new File(xsltPath)));
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
transformer.transform(new StreamSource(new File(sourcePath)),
new StreamResult(new File(resultDir)));
Где SourcePath = C: /path/Temp/AppModule.xml xsltPath = C: /path/Temp/create-fragment.xslt resultDir = C:/путь/Temp/
Этот код разделяет AppModule.xml на более мелкие XML-файлы отлично, но с исключением в консоли,
Ошибка java.io.FileNotFoundException: C: \ путь \ Temp (доступ запрещен) net.sf.saxon.trans.XPathException: java.io.FileNotFoundException: C: \ путь \ Temp (доступ запрещен)
Я googled и обнаружил, что я должен указать точное имя файла для нового метода File(). Но, как вы видите, имя файла, которое я не знаю во время компиляции, только во время выполнения анализатор идентифицирует входной файл AppModule.xml и разбивает xml на более мелкие файлы с именем тега значения в нем.
AppModule.xml
<?xml version='1.0' encoding='UTF-8'?>
<data>
<value>A1</value>
<value>B1</value>
<value>C1</value>
<value>A2</value>
<value>B2</value>
<value>C2</value>
</data>
Выход: A1.xml:
<?xml version="1.0" encoding="UTF-8"?>
<test>A1</test>
Точно так же она будет создавать B1, C1, A2, B2, C2 файлы соответственно.
Пожалуйста, поделитесь своими ценными замечаниями.
Вы можете отсканировать каталог и найти файлы, которые были созданы, а затем присвоить их дескрипторам 'File'. Смотрите: [«Как сканировать папку в Java»] (http://stackoverflow.com/questions/189094/how-to-scan-a-folder-in-java) –
Вы уверены, что ваша проблема не в том: В доступе отказано"? Убедитесь, что права доступа к файлам верны или измените местоположение на доступное программе. – Risadinha