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