Я следую этому решению, чтобы использовать enetities в файле строковых ресурсов:
Можно ли напрямую выполнить замену строк в XML файлах ресурсов Android?
Я использую внешний файл в дереве ресурсов: /res/raw/entities.dtd
, его содержимое:
<!ENTITY ent_devicename "MyDeviceName">
В string.xml
ресурсов string.xml
:
<!DOCTYPE resources [
<!ENTITY % ent_devicename SYSTEM "../raw/entities.dtd">
%ent_devicename;
]>
<resources>
<string name="name">The name is &ent_devicename;</string>
</resources>
но я получаю эту ошибку:
Сущность "ent_devicename" была указана, но не объявлена.
Как вы можете видеть, Android Studio распознает внешний файл сущности:
и субъект:
Может ли кто-нибудь предоставить полный правильный пример, чтобы все работало? Я имею в виду полный компилируемый проект Android Studio, с объявлениями сущностей в разделенном файле.
ОБНОВЛЕНИЕ Хорошо, если вы уделяете больше внимания этой ссылке w3schools:
https://www.w3schools.com/xml/xml_dtd_entities.asp
вы видите решение:
файлы external entities.dtd
содержат
<!ENTITY ent_devicename "MyDeviceName">
то новый ресурс ресурса строки:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
<!ENTITY ent_devicename SYSTEM "../raw/entities.dtd">
]>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="Typos">
<string name="ent_devicenamxxe2">&ent_devicename;</string>
Я изменил <!ENTITY % ent_devicename
на <!ENTITY ent_devicename
(не более%) Я удалил %ent_devicename;
Теперь он компилируется, но полученный APK, похоже, игнорирует значения сущности (использует пустую строку). Поэтому проблема не решена!
Дай мне знать!