【问题标题】:How can I read a .txt in a string.xml file?如何读取 string.xml 文件中的 .txt?
【发布时间】:2019-11-19 06:05:01
【问题描述】:

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

<?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插入文本的解决方案,但这对我来说太复杂了。谁能帮我这个?

【问题讨论】:

  • 您可以使用此策略并将大文本放在单独的文件中:alvinalexander.com/android/…
  • 我实际上打开了那个页面,但我真的不知道如何使用文件而不是那个 HTML 代码。 会起作用吗?
  • &lt;![CDATA[ your document text]]&gt;替换HTML,如果它只是文本数据,你可以单独在一个文件中处理所有大文本,由XML标签锚定,而不是将它放在共享的strings.xml文件中。
  • 您的意思是,不是让 string.xml 拥有带有 CDATA 代码和文本的 longtext.xml 吗?问题是我有两种翻译,并且我有两种不同语言的 string.xml。 longtext.xml 不会只针对一种语言吗?
  • 这是一种不好的方法,请按照@Compass 的建议使用&lt;![CDATA[ your document text]]&gt;。目前,您拥有一个完全可用的独立 XML 文件,任何系统都可以使用它,而无需依赖那些额外的 assets 文件。一旦将长内容放入外部文件中,XML 文件的全部目的就会从作为数据源转变为简单地指向可能存在或不存在于该系统上的数据源。此外,“看起来很糟糕”的评论并不是一个真正的问题,因为 XML 文件并不意味着看起来很好,它们是供计算机处理的,而不是供人们惊叹的。

标签: java android xml string


【解决方案1】:

解决方案主要基于以下提供的实现: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 工作中无意中被破坏
  • 代码/版本管理存在于定义的资源目录之外

strings 文件的目的是用于纯应用程序的文本;为其添加文件名解释是代码异味,并且随着项目变大会导致痛苦的崩溃,特别是如果文件存在于标准项目结构之外。

【讨论】:

    猜你喜欢
    • 2014-04-21
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多