Я столкнулся с проблемой, которая сводит меня с ума xD ... (Во-первых: Привет всем! По какой-то причине я не могу добавить в начало сообщения "Привет всем" в редакции oO ...)
Вариант использования следующий: у меня есть файл xml, хранящийся в папке raw моего проекта.XML-файл выглядит примерно так:
<myxml ....>Some text<innerelement ... /></myxml>
Я знаю, что есть папка с именем xml, но мне нужна строка, а не XmlResourceParser (которую вы получаете при вызове context.getResources (). GetXml (id)).
Теперь, что я делаю, чтобы загрузить этот необработанный XML-файл:
context.getResources().openRawResource(R.raw.myfile)
Это возвращает мне InputStream, который я затем пытаюсь преобразовать в String, используя следующуюcode:
try {
byte[] buffer = new byte[stream.available()];
stream.read(buffer);
stream.close();
return new String(buffer);
} catch (IOException e) {
// Error handling
}
Если я теперь выведу получившуюся строку в logcat, все, что я получу, это набор квадратов, разбросанных по нескольким строкам.
Так что, наверное, что-то упустилтам ... Я попробовал несколько способов преобразования этого входного потока в String, и все они закончились тем же результатом (см. изображение выше) ...
Заранее спасибо и наилучшими пожеланиями,
zainodis
ОБНОВЛЕНИЕ 12.11.2011
Я попытался сохранить файл XML в папке raw, используя расширение .txt вместо .xml.Теперь преобразование завершается с ошибкой OutOfMemory oO.Я пробовал другой способ конвертировать данные, используя предложения из этой темы - все это привело к исключению OutOfMemoryException:
11-12 06:09:22.671: I/TestRunner(652): java.lang.OutOfMemoryError
11-12 06:09:22.671: I/TestRunner(652): at java.util.Scanner.expandBuffer(Scanner.java:2183)
11-12 06:09:22.671: I/TestRunner(652): at java.util.Scanner.readMore(Scanner.java:2143)
11-12 06:09:22.671: I/TestRunner(652): at java.util.Scanner.findPostDelimiter(Scanner.java:2121)
11-12 06:09:22.671: I/TestRunner(652): at java.util.Scanner.setTokenRegion(Scanner.java:2031)
11-12 06:09:22.671: I/TestRunner(652): at java.util.Scanner.next(Scanner.java:1017)
11-12 06:09:22.671: I/TestRunner(652): at java.util.Scanner.next(Scanner.java:993)
11-12 06:09:22.671: I/TestRunner(652): at de.softcon.mobileapp.framework.core.configuration.utility.StringUtils.InputStreamToString(StringUtils.java:69)
11-12 06:09:22.671: I/TestRunner(652): at de.softcon.mobileoffences.domainmodel.serialization.test.CorpusDelictiFactoryTest.testSerialization(CorpusDelictiFactoryTest.java:32)
11-12 06:09:22.671: I/TestRunner(652): at java.lang.reflect.Method.invokeNative(Native Method)
11-12 06:09:22.671: I/TestRunner(652): at java.lang.reflect.Method.invoke(Method.java:507)
11-12 06:09:22.671: I/TestRunner(652): at junit.framework.TestCase.runTest(TestCase.java:154)
11-12 06:09:22.671: I/TestRunner(652): at junit.framework.TestCase.runBare(TestCase.java:127)
11-12 06:09:22.671: I/TestRunner(652): at junit.framework.TestResult$1.protect(TestResult.java:106)
11-12 06:09:22.671: I/TestRunner(652): at junit.framework.TestResult.runProtected(TestResult.java:124)
11-12 06:09:22.671: I/TestRunner(652): at junit.framework.TestResult.run(TestResult.java:109)
11-12 06:09:22.671: I/TestRunner(652): at junit.framework.TestCase.run(TestCase.java:118)
11-12 06:09:22.671: I/TestRunner(652): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
11-12 06:09:22.671: I/TestRunner(652): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
11-12 06:09:22.671: I/TestRunner(652): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
11-12 06:09:22.671: I/TestRunner(652): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)