gpt4 book ai didi

java - Android:将 XML 从原始文件夹转换为字符串

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:15 25 4
gpt4 key购买 nike

我遇到了一个让我发疯的问题 xD ...(首先:大家好!出于某种原因,我不能在编辑 oO 的帖子开头添加“大家好”...)

用例如下:我在项目的原始文件夹中存储了一个 xml 文件。 xml 文件看起来像这样:

<myxml ....>Some text<innerelement ... /></myxml>

我知道有一个名为 xml 的文件夹,但我需要的是一个字符串 - 而不是 XmlResourceParser(调用 context.getResources().getXml(id) 时得到的)。

现在,我加载这个原始 xml 文件的方法是:

context.getResources().openRawResource(R.raw.myfile)

这会返回一个 InputStream,然后我尝试使用以下代码将其转换为 String:

try {
byte[] buffer = new byte[stream.available()];
stream.read(buffer);
stream.close();
return new String(buffer);
} catch (IOException e) {
// Error handling
}

如果我现在将结果字符串打印到 logcat,我得到的只是一堆方 block ,分布在几行中。

所以我想我一定是遗漏了一些东西......我已经尝试了几种将此输入流转换为 String 的方法,但所有方法都以相同的结果结束(见上图)......

提前致谢并致以最诚挚的问候,

赛诺迪斯

2011 年 11 月 12 日更新

我尝试使用扩展名 .txt 而不是 .xml 将 xml 文件保存在原始文件夹中。现在转换失败并出现 OutOfMemory 异常 oO。我使用 this thread 中的建议尝试了不同的方式来转换数据- 全部导致 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)

最佳答案

我将此代码放在 onCreate(...) 中。它可以显示xml文件中的字符串。

InputStream stream = getResources().openRawResource(R.raw.data);
try {
byte[] buffer = new byte[stream.available()];
stream.read(buffer);
stream.close();
Log.i("xml", new String(buffer));
} catch (IOException e) {
// Error handling
}

关于java - Android:将 XML 从原始文件夹转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8094745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com