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