gpt4 book ai didi

android - 获取XML中childNodes的属性值

转载 作者:数据小太阳 更新时间:2023-10-29 02:44:54 25 4
gpt4 key购买 nike

我想在 XML 文件中获取第二个 child 的值,但这对我来说似乎很难,所以如果你能帮助我,我将不胜感激。我需要获取名称 RobBobVictor .. 没有 Tom。最后,字符串表达式应该是 "//main"

 <main id="Tom">
<asd name="Rob">
</asd>
<qwe name="Bob">
</qwe>
<iop name="Victor">
</iop>
</main>

这就是我目前所做的...

public void getXML(String direction)throws Exception{
String[] stops = new String[22];
InputSource inputSrc = new InputSource(getResources().openRawResource(R.raw.bus_time));
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//main" ;
NodeList nodes = (NodeList) xpath.evaluate(expression,inputSrc,XPathConstants.NODESET);


if(nodes != null && nodes.getLength() > 0) {
for (int i = 0; i < nodes.getLength(); ++i) {
Node node = nodes.item(i);
NodeList child = node.getChildNodes();

for(int k=0; k<child.getLength();k++) {
Node asd = child.item(k);
NamedNodeMap attr = asd.getAttributes();
for (int a = 0; a < attr.getLength(); a++) {
stops[a] = attr.item(a).getNodeValue();
Toast.makeText(this, String.valueOf(stops[a]), Toast.LENGTH_LONG).show();

}
}

}
}

}

我从 Toast 收到的结果 = null

最佳答案

方法 node.getChildNodes() 返回一些类型为 TEXT_NODE 的元素,这不是您正在寻找的类型,并且在尝试访问其属性时失败。为了使您的代码正常工作,您必须在尝试获取所需属性之前检查 asd.getNodeType() == Node.ELEMENT_NODE 是否正确。因此,将此条件添加到您的以下代码段中:

if (asd.getNodeType() == Node.ELEMENT_NODE) {             
NamedNodeMap attr = asd.getAttributes();
for (int a = 0; a < attr.getLength(); a++) {
stops[a] = attr.item(a).getNodeValue();
Toast.makeText(this, stops[a], Toast.LENGTH_LONG).show();

}
}

但是你可以让它更简单,你不需要遍历属性来获取特定的属性,只需将它转换为 Element 并通过属性名称访问它,比如:

if (asd.getNodeType() == Node.ELEMENT_NODE) {             

Toast.makeText(this, ((Element)asd).getAttribute("name"), Toast.LENGTH_LONG).show();

}

或者另一种方式:

if (asd instanceof Element) {             

Toast.makeText(this, ((Element)asd).getAttribute("name"), Toast.LENGTH_LONG).show();

}

关于android - 获取XML中childNodes的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com