我无法在这里解析XML。它只返回“Item”
由于我的AndroidActivity非常大,因此无法显示。这就是为什么我只展示了负责解析的部分。
我的 XML 看起来像这样:
<MyResource>
<Item>First</Item>
<Item>Second</Item>
</MyResource>
我的活动类方法:
public class ShowItems extends Activity{
ListView lv;
ListAdapter adapter;
static final String KEY_RESOURCE = "MyResource"; // parent node
static final String KEY_ITEM = "Item";
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
String[] from={KEY_ITEM };
int[] to={R.id.mylist_item};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.showitems);
lv=(ListView) findViewById(R.id.lv_items);
parseXML();
adapter = new SimpleAdapter(this, mylist,R.layout.list_item,from , to);
lv.setAdapter(adapter);
}
private void parseXML() {
// TODO Auto-generated method stub
XMLParser parser = new XMLParser();
final String URL="http://10.0.2.2:8080/MySite/xml";
String xml = parser.getXmlFromUrl(URL);
Document doc = parser.getDomElement(xml);
NodeList nl = doc.getElementsByTagName(KEY_RESOURCE);
for (int i = 0; i < nl.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
map.put(KEY_ITEM, parser.getValue(e, KEY_ITEM));
mylist.add(map); }
}
我的XML分析器类:
import java.io.IOException;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import android.util.Log;
public class XMLParser {
public String getXmlFromUrl(String url) {
String xml = null;
try {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return xml;
}
public Document getDomElement(String xml){
Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
doc = db.parse(is);
} catch (ParserConfigurationException e) {
Log.e("Error: ", e.getMessage());
return null;
} catch (SAXException e) {
Log.e("Error: ", e.getMessage());
return null;
} catch (IOException e) {
Log.e("Error: ", e.getMessage());
return null;
}
// return DOM
return doc;
}
public String getValue(Element item, String str) {
NodeList n = item.getElementsByTagName(str);
return this.getElementValue(n.item(0));
}
public final String getElementValue( Node elem ) {
Node child;
if( elem != null){
if (elem.hasChildNodes()){
for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
if( child.getNodeType() == Node.TEXT_NODE ){
return child.getNodeValue();
}
}
}
}
return "";
}
}
我不能在这里解析我的XML。这里的问题是什么?< br >它只返回“Item”。< br >在我的< code>ActivityClass中,特别是在代码的这一部分,我需要做什么?
String xml = parser.getXmlFromUrl(URL);
Document doc = parser.getDomElement(xml);
NodeList nl = doc.getElementsByTagName(KEY_RESOURCE);
for (int i = 0; i < nl.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
map.put(KEY_ITEM, parser.getValue(e, KEY_ITEM));
mylist.add(map); }
您的getValue()
方法获取MyResource
元素,从那里,您需要获取MyResource
下的所有项目并执行getElementValue()
。示例代码是:
public Map getValue(Element item, String str) {
NodeList n = item.getElementsByTagName(str);
for (int i = 0; i < n.getLength(); i++) {
System.out.println(getElementValue(n.item(i)));
}
//Here store it in list/map and return list/map instead of String
return list/MapHere;
}
问题内容: 我想解析一个json文件,但它经过这样的事情: 但是大约有三千个这样的对象。我一直在使用Gson解析我的json对象,但是我怎么解析这种文件呢?以及如何检索名称“ CDG”或“ ORY”? 问题答案: 您可以尝试如下操作: 使用gson,您可以按以下方式检索键名: 并使用java- json 可以执行以下操作: 从网址获取json:
问题内容: 在做镜像或拉镜像时,Docker如何确定镜像名称中是否存在注册表服务器,或者默认注册表中它是否为路径/用户名(例如Docker Hub)? 我从1.1图像规范中看到以下内容: 标签 标签用于将用户提供的描述性名称映射到任何单个图像ID。标记值限于字符集[a-zA-Z_0-9]。 资料库 标签的集合,这些标签被分组在一个共同的前缀下:(:之前的名称部分)。例如,在标记有名称my-app:
我正在尝试使用Spring Cloud的Open Faign调用另一个服务,但我一直得到以下回应: 这是我的密码: 我已将Faign配置为使用OkHttp客户端,但我不确定它是否对错误负责:
问题内容: 如何使用dom parser java在xml中解析相同的名称标签? 我有以下要使用Java中的dom解析器解析的xml文件。 问题答案: 但我建议使用XPath
问题内容: 我一直在尝试导入以下Web服务:http : //soap.genome.jp/KEGG.wsdl和$ {JAVA_HOME} / bin / wsimport: 但出现以下错误: 问题是来自WSDL还是来自wsimport的实现?我应该使用其他工具吗? 谢谢 皮埃尔 问题答案: 我从此错误报告中发现了(显然是)解决方法:https : //netbeans.org/bugzilla/
好了,到这里,终于完成了在settings元素的解析工作中涉及到知识点的学习工作了。 现在我们继续回到XMLConfigBuilder的settingsAsProperties方法中: 校验setting子元素配置的属性名称在Configuration对象中是否有对应的setter方法定义: // 获取Configuration类的描述对象 MetaClass metaConfig = MetaC