0

我正在尝试读取布局 XML 文件。

String file="res/layout/activity_main.xml";
InputStream in=mCurrentActivity.getClass().getClassLoader().getResourceAsStream(file);
                InputStreamReader isr= new InputStreamReader(in);
                BufferedReader br = new BufferedReader(isr);
                while((line=br.readLine()) != null )
                {
                    XposedBridge.log(line);
                 }

这是我的代码,这是我得到的输出对应的 XML 文件: 我得到的输出:

由于这是我的学期项目,我需要快速解决(还剩 2 天)所以任何帮助将不胜感激..

解决方案

我没有身份证,所以首先我得到了身份证:

int layoutId =mCurrentActivity.getResources().getIdentifier("activity_main", "layout",mCurrentActivity.getPackageName());

接着 :

XmlResourceParser s = mCurrentActivity.getResources().getLayout(layoutId);

感谢迈克M。

4

2 回答 2

0

搜索在这里遇到了非常相似的问题。我猜,解决问题的主要思想是你应该指定编码。

根据您的情况,尝试以这种方式更改代码:

String file="res/layout/activity_main.xml";
InputStream in=mCurrentActivity.getClass().getClassLoader().getResourceAsStream(file);
InputStreamReader isr= new InputStreamReader(in, "UTF-8");
BufferedReader br = new BufferedReader(isr);
while((line=br.readLine()) != null)
{
    XposedBridge.log(line);
}

或者

String file="res/layout/activity_main.xml";
InputStream in=mCurrentActivity.getClass().getClassLoader().getResourceAsStream(file);
InputStreamReader isr= new InputStreamReader(in, StandardCharsets.UTF_8);
BufferedReader br = new BufferedReader(isr);
while((line=br.readLine()) != null)
{
    XposedBridge.log(line);
}

或尝试使用另一种编码变体,尽管 UTF-8。

我想这取决于您在 your.xml 文件中设置的编码类型

例子:

<?xml version="1.0" encoding="utf-8"?>
于 2019-01-12T21:24:55.853 回答
0

您尝试读取的 XML 文件不是纯 XML bin 二进制 XML 格式。因此,试图通过 common 阅读它是Reader行不通的。

您可以使用例如库AXML来加载此类二进制 xml 文件:

String file="res/layout/activity_main.xml";
InputStream in = mCurrentActivity.getClass().getClassLoader().getResourceAsStream(file));
Document doc = new CompressedXmlParser().parseDOM(in);
于 2019-01-13T11:52:33.390 回答