【发布时间】:2012-05-31 23:37:39
【问题描述】:
我通常不寻求帮助,我总是自己研究并尝试找到解决方案,但这一次我真的陷入了困境...... 我对某些语言有很多经验,但对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,如果可能的话,我希望将它们放在一个多维数组中。
【问题讨论】:
-
为了完整起见,您能否编辑您的答案以包含您尝试解析的实际 XML?
-
感谢您的快速回答,我已经使用 XML 编辑了我的帖子,希望您能帮助我:)
-
我不确定我是否会回答这个问题,因为我已经需要睡觉了 :)。但是,你能尽可能多地发布你的活动吗?乍一看,我看到了大约 3 个可能的问题点,但目前我不能确定是哪一个导致了这个错误。
-
在mainclass中,在线程之后,我没有任何可能导致问题的东西,但我也已经编辑过,所以你可以看到我的完整代码。
-
检查此 [LINK][1]。这里,使用 sax [1] 进行 XML 解析:stackoverflow.com/questions/6209793/…
标签: android xml multithreading parsing