Кодовое имя создания xml - PullRequest
       1

Кодовое имя создания xml

1 голос
/ 04 февраля 2020

Я пытаюсь создать простой xml документ.

Я никогда не находил хорошую документацию по этому поводу, поэтому я просто пробую это так:

Element response = new Element("Artikelliste");
Element artikel1 = new Element("Artikel");
Element artikel2 = new Element("Artikel");
artikel1.setAttribute("nummer", "5678");
artikel1.setAttribute("bezeichnung", "KettenhandschuhXML");
artikel2.setAttribute("nummer", "1011");
artikel2.setAttribute("bezeichnung", "MesserXML");

response.addChild(artikel1);
response.addChild(artikel2);

OutputStream os = Storage.getInstance().createOutputStream("test1234.xml");
OutputStreamWriter writer = new OutputStreamWriter(os);
XMLWriter xmlWriter = new XMLWriter(false);        
xmlWriter.writeXML(writer, response);

FileSystemStorage.getInstance().openOutputStream("test1234.xml").write(response.toString().getBytes());

I ' В настоящее время я получаю IllegalArgumentException из-за последней строки, которая говорит:

test1234. xml не является допустимым путем, используйте FileSystemStorage.getInstance (). getAppHomePath () для получить правильный путь к каталогу для чтения / записи файлов

Если я исправлю соответствующую строку, она будет выглядеть следующим образом:

FileSystemStorage.getInstance (). openOutputStream ( FileSystemStorage.getInstance (). GetAppHomePath () ). Write (response.toString (). GetBytes ());

Но программа не может знать, о каком документе идет речь ?? ! Когда я запускаю такой код, сообщения об ошибке не возникает, ничего не происходит, и документ не создается ...

Спасибо за помощь! :)

Ответы [ 3 ]

1 голос
/ 05 февраля 2020

Строка:

FileSystemStorage.getInstance().openOutputStream("test1234.xml").write(response.toString().getBytes());

должна быть:

FileSystemStorage.getInstance().openOutputStream(FileSystemStorage.getInstance().getAppHomePath() + "test1234.xml").write(response.toString().getBytes());

Я предлагаю вам прочитать документацию в Руководстве разработчика Codename One, на странице Файловая система, Хранение, сеть и анализ :

Все пути в FileSystemStorage являются абсолютными, это значительно упрощает проблему переносимости, поскольку концепция относительности и текущий рабочий каталог не очень переносимы.

Все URL-адреса используют / в качестве разделителя пути, мы стараемся применять это поведение даже в Windows.

Каталоги заканчиваются символом / и поэтому могут быть легко различены по их имени.

API-интерфейс FileSystemStorage предоставляет вызов getRoots () для получения списка root каталогов файловой системы (затем вы можете «закопаться» через API listFiles). Тем не менее, это сбивает с толку и не интуитивно понятно для разработчиков.

Чтобы упростить процесс создания / чтения файлов, мы добавили метод getAppHomePath (). Этот метод позволяет нам получить путь к каталогу, где файлы могут быть сохранены / прочитаны.

После исправления ваш код генерирует это XML:

<Artikelliste>
 <Artikel nummer='5678' bezeichnung='KettenhandschuhXML'>
 </Artikel>
 <Artikel nummer='1011' bezeichnung='MesserXML'>
 </Artikel>
</Artikelliste>

I не имеют прямого опыта работы с XML, однако учтите, что PropertyBusinessObject можно преобразовать в / из XML.

0 голосов
/ 06 февраля 2020

Ух ты, ребята, классные !!!

На самом деле файл где-то спрятан, я его нашел. :)

Но теперь я столкнулся с новой проблемой, которую сначала хотел решить самостоятельно, но хорошо.

Теперь сгенерированный документ xml выглядит следующим образом:

<Artikelliste>
 <Artikel nummer='5678' bezeichnung='KettenhandschuhXML'>
 </Artikel>
 <Artikel nummer='1011' bezeichnung='MesserXML'>
 </Artikel>
</Artikelliste>

Однако я должен сделать так, чтобы это выглядело так:

 <Artikelliste>
    <Artikel>
        <nummer>5678</nummer>
        <bezeichnung>KettenhandschuhXML</bezeichnung>
    </Artikel>
    <Artikel>
        <nummer>1011</nummer>
        <bezeichnung>MesserXML</bezeichnung>
    </Artikel>
 </Artikelliste>

Спасибо, ребята, за поддержку.

0 голосов
/ 05 февраля 2020

Большое спасибо! :)

Я внес изменения, но они все еще не работают. Я попытался изменить строку с этим путем "/test1234.xml" и этим "test1234. xml".

Однако, это не сработало ни с одной попыткой, и документ не был создан. Чтобы убедиться, что я выполнил поиск документов.

...