我通常不寻求帮助,我总是自己研究并尝试找到解决方案,但这次我真的被困住了......我对某些语言有很多经验,但对 java 没有。 .. 所以,我想做的是一个应用程序,它具有动态布局,并从特定主机上的 XML 文件加载它。我的第一个问题显然是不可能从主线程读取 XML,所以我必须了解线程和 Asynctaks,我决定使用一个简单的线程并将值存储在我创建的一些全局变量中,但它不起作用...我也尝试将 SAX 用于 XML 解析器,但我更喜欢 DOM。我只是想这样做超过3天,我对此有点生气,我希望有人能帮助我,这是我的代码:
这是我定义我的变量的类。它们都应该处理多个值,除了 XML 值,它将存储 XML 的 URL 以在线程中使用它。
public class Info {
public static String Param1[];
public static String Param2[];
public static String Param3[];
public static String Param4[];
public static String Param5[];
public static String Param6[];
public static String XML;
}
这是我的主线:
//Create the basic layout
ScrollView sv = new ScrollView(this);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
sv.addView(ll);
Info.XML="mylink";
Thread thread = new Thread()
{
@Override
public void run() {
try {
URL url = new URL(Info.XML);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList ActionContainers = doc.getElementsByTagName("ActionContainer");
Node mainContainer = ActionContainers.item(0);
Element Container = (Element) mainContainer;
NodeList Actions = Container.getElementsByTagName("Action");
for (int i = 0; i < Actions.getLength(); i++) {
Node mainAction = Actions.item(i);
Element Action = (Element) mainAction;
Info.Param1[i]=Action.getAttribute("Param1");
Info.Param2[i]=Action.getAttribute("Param2");
Info.Param3[i]=Action.getAttribute("Param3");
Info.Param4[i]=Action.getAttribute("Param4");
Info.Param5[i]=Action.getAttribute("Param5");
Info.Param6[i]=Action.getAttribute("Param6");
}
} catch (Exception e) {
Info.XML="Erro";
}
}
};
try{
thread.start();
} catch(Exception e){
Info.XML="Erro";
}
EditText et = new EditText(this);
et.setText(Info.XML);
ll.addView(et);
setContentView(sv);
没有检测到异常,它根本不返回xml信息......我希望有人可以在这里给我一点帮助。
谢谢
编辑:
这是 XML:
<appname Version="yyy" WrittenOn="yyy">
<Config>
<Page Id="yyy">
<ActionContainer Id="yyy">
<Action Param1="xxx" Param2="xxx" Param3="xxx" Param4="xxx" Param5="xxx" Param6="xxx"></Action>
<Action Param1="xxx" Param2="xxx" Param3="xxx" Param4="xxx" Param5="xxx" Param6="xxx"></Action>
<Action Param1="xxx" Param2="xxx" Param3="xxx" Param4="xxx" Param5="xxx" Param6="xxx"></Action>
<Action Param1="xxx" Param2="xxx" Param3="xxx" Param4="xxx" Param5="xxx" Param6="xxx"></Action>
...
</ActionContainer>
</Page>
</Config>
我需要所有的 xxx,如果可能的话,我想把它们放在一个多维数组上。