• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 资源管理开发常见问题
2
3<!--Kit: Localization Kit-->
4<!--Subsystem: Global-->
5<!--Owner: @liule_123-->
6<!--Designer: @buda_wy-->
7<!--Tester: @lpw_work-->
8<!--Adviser: @Brilliantry_Rui-->
9
10## 如何读取rawfile中的xml文件并转化为String类型(API 9)
11
12**解决措施**
13
14通过resourceManager的getRawFileContent接口获取xml数据,再通过String.fromCharCode将获取的数据转化为String类型。
15
16**代码示例**
17
18```
19resourceManager.getRawFileContent('test.xml', (error, value) => {
20  if (error != null) {
21    console.log("error is " + error);
22  } else {
23    let rawFile = value;
24    let xml = String.fromCharCode.apply(null, rawFile)
25  }
26});
27```
28
29**参考链接**
30
31[资源管理](../reference/apis-localization-kit/js-apis-resource-manager.md)
32
33
34## Stage模型下如何获取资源(API 9)
35
36**解决措施**
37
38Stage模型支持了通过context获取resourceManager对象的方式,再调用其内部获取资源的接口,无需再导入包。此方式不适用于FA模型。
39
40**代码示例**
41
42```
43const context = getContext(this) as any
44context
45  .resourceManager
46  .getString($r('app.string.entry_desc').id)
47  .then(value => {
48    this.message = value.toString()
49})
50```
51
52
53## 如何通过接口获取resource目录的路径(API 9)
54
55**问题现象**
56
57希望获取resource目录的路径,从而使用文件管理接口操作文件。
58
59**解决措施**
60
61由于应用以hap形式进行安装,安装完成后不会解压hap包,所以在程序运行时无法获取resource路径。
62
63可以考虑如下两种方式获取资源文件:
64
651. 使用$r或者$rawfile访问。适合静态访问,程序运行时不改变资源路径。
66
672. 使用ResourceManage访问。适合动态访问,程序运行时可动态改变资源路径。
68
69**参考链接**
70
71[资源分类与访问](../quick-start/resource-categories-and-access.md)、[资源管理](../reference/apis-localization-kit/js-apis-resource-manager.md)
72
73
74## 资源管理内的getPluralString方法获取value值有误(API 9)
75
76**问题现象**
77
78getPluralString接口获取value值有误,显示复数值(other)。
79
80**解决措施**
81
82getPluralString接口只支持英文系统,不支持中文。
83
84
85## 如何获取resources目录中自定义的string字段(API 9)
86
87**解决措施**
88
89使用ResourceManager模块的getStringValue方法获取。
90
91**参考链接**
92
93[资源管理](../reference/apis-localization-kit/js-apis-resource-manager.md#getstringvalue9)
94
95
96## AppScope中的资源如图片,文字等如何引用(API 9)
97
98**解决措施**
99
100通过$r('app.type.name')的形式来引用,type代表资源类型,如color,string,media等,name代表资源命名。
101
102
103## Resource类型如何转为String(API 9)
104
105**解决措施**
106
107Resource为string支持限定词目录使用this.context.resourceManager.getStringSync($r('app.string.test').id),可以同步转换,不支持$r('app.string.test', 2)方式。
108
109**参考链接**
110
111[ResourceManager\(资源管理\)](../reference/apis-localization-kit/js-apis-resource-manager.md#getstringsync9)
112
113
114## form_config.json文件中是否可以使用$引用常量(API 9)
115
116form_config.json文件中不支持使用$引用常量。
117
118
119## ArkTS如何解析xml文件(API 9)
120
121**解决措施**
122
1231. 在rawfile目录下创建如下xml文件**。**
124
125   ```
126   <?xml version="1.0" encoding="utf-8"?>
127   <user>
128       <name>Jacky</name>
129       <age>18</age>
130   </user>
131   ```
132
1332. 使用resourceManager.getRawFileContent获取xml文件字节数组。
134
135```
136import resourceManager from '@ohos.resourceManager';
137import xml from '@ohos.xml';
138export default {
139    onCreate() {
140        resourceManager.getResourceManager((error, res) => {
141            if (error != null) {
142                console.log("error is " + error);
143                return
144            }
145            res.getRawFileContent("test.xml", (error, value) => {
146                if (error != null) {
147                    console.log("error is " + error);
148                    return
149                }
150                let arrayBuffer = value.buffer; // unit8Array
151                var xmpParser = new xml.XmlPullParser(arrayBuffer);
152                var tagName = ""
153                //do something
154                console.log("parse xml finished");
155            })
156        })
157    }
158};
159```
160