如何读取string.xml文件中的.txt?

时间:2019-07-09 16:10:21

标签: java android xml string

我有一个长文本需要输入字符串,到目前为止,它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="long_text">
xxx
xxx
xxx
xxx
</string>
</resources>

它看起来很糟糕。此外,如果我想更改文本,这会带来一些不便。所以我想要这样的东西:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="long_text"> assets/myfile.txt </string>
</resources>

该长xxx文本将存储在文件夹myfile.txt中的某个文件中。我已经看到了一些通过Java代码而不是strings.xml插入文本的解决方案,但是对我来说太复杂了。谁能帮我这个?

1 个答案:

答案 0 :(得分:2)

解决方案主要基于https://alvinalexander.com/android/how-to-store-static-text-in-android-file-res-values

提供的实现

如果您担心要管理大量文本,则可以在 strings.xml 文件之外创建独立资源。这将错别字限制为单个文件,即,如果您忘记了某个地方的方括号,它将被隔离到特定的XML文档。

res / values 中创建一个名为 strings_longtext.xml 的XML文件,并将单个文本值放在其中。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="very_large_string">
        <![CDATA[
            Lorem ipsum
            Lorem ipsum
            Lorem ipsum
            Lorem ipsum
            Lorem ipsum
            Lorem ipsum             
        ]]>
    </string>
</resources>

然后,您可以通过类似于普通 strings.xml 文件的上下文访问器访问此字符串。

context.getString(R.string.very_large_string);

您不应将文件名放在 strings.xml 中的原因有多种:

  • 将字符串的值更改为实际文本值,以更改为需要解析和处理的文件引用
  • 在i18n的努力中可能会被无意或破坏
  • 代码/版本管理位于已定义的资源目录之外

字符串文件的目的是纯字符串,并在其中添加文件名解释是代码味道,随着项目的扩大,将导致痛苦的崩溃。