Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中从XML解析的数组中搜索_Java_Android_Xml_Arrays_Parsing - Fatal编程技术网

Java 在Android中从XML解析的数组中搜索

Java 在Android中从XML解析的数组中搜索,java,android,xml,arrays,parsing,Java,Android,Xml,Arrays,Parsing,我将这个XML文件解析为ArrayList 在这个ArrayList中,我有国家和其中国家的报警号码 我想搜索一个国家,找到警察、救护车或消防队员。号码 下面是帮助您解决问题的代码 将XML解析为ArrayList: protected ArrayList<Alarmdiensten> getAlarmdiensten() { ArrayList<Alarmdiensten> lijst = new ArrayList<Alarmdiensten>(

我将这个XML文件解析为ArrayList

在这个ArrayList中,我有国家和其中国家的报警号码

我想搜索一个国家,找到警察、救护车或消防队员。号码

下面是帮助您解决问题的代码

将XML解析为ArrayList:

protected ArrayList<Alarmdiensten> getAlarmdiensten() {
     ArrayList<Alarmdiensten> lijst = new ArrayList<Alarmdiensten>();
     try {
      DocumentBuilder builder =DocumentBuilderFactory.newInstance().newDocumentBuilder();
      Document doc = builder.parse(getAssets().open("alarmdiensten.xml"));
      NodeList nl = doc.getElementsByTagName("land");
      for (int i=0;i<nl.getLength();i++) {
       Node node = nl.item(i);
       Alarmdiensten land = new Alarmdiensten();

                land.land = Xml.innerHtml(Xml.getChildByTagName(node, "naam"));
       land.landcode = Xml.innerHtml(Xml.getChildByTagName(node, "code"));
       land.politie = Xml.innerHtml(Xml.getChildByTagName(node, "politie"));
       land.ambulance = Xml.innerHtml(Xml.getChildByTagName(node, "ambulance"));
       land.brandweer = Xml.innerHtml(Xml.getChildByTagName(node, "brandweer"));
       land.telamba = Xml.innerHtml(Xml.getChildByTagName(node, "telamba"));
       land.adresamba = Xml.innerHtml(Xml.getChildByTagName(node, "adresamba"));

       lijst.add(land);
      }
     } catch (Exception e) {;
     }
     return lijst;
    }
protectedarraylist getAlarmdiensten(){
ArrayList lijst=新的ArrayList();
试一试{
DocumentBuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc=builder.parse(getAssets().open(“alarmdiensten.xml”);
NodeList nl=doc.getElementsByTagName(“land”);

for(int i=0;i使用for循环并搜索它

for(Alarmdiensten land :diensten){
        if(land.landcode.equals(landcode) ){
           // yes i got it, The current land. 
            break;
        }
    }

使用for循环并搜索它

for(Alarmdiensten land :diensten){
        if(land.landcode.equals(landcode) ){
           // yes i got it, The current land. 
            break;
        }
    }

只需迭代列表:

String landcode = getLandCode();
for (Alarmdiensten dienst:diensten) {
  if (dienst.landcode.equals(landcode)) {
    // do what has to be done
  }
}
如果必须更频繁地查找值,请考虑使用映射而不是列表:

Map<String, List<Alarmdiensten>> servicesInCountry 
                   = new HashMap<String, List<Alarmdiensten>>();
for (Alarmdiensten dienst:diensten) {
  List<Alarmdiensten> list = servicesInCountry.get(dienst.landcode);
  if (list == null) {
     list = new ArrayList<Alarmdiensten>();
     servicesInCountry.put(dienst.landcode, list);
  }
  list.add(dienst);
}

// ... and later on
List<Alarmdiensten> servicesInSweden = servicesInCountry.get("SWE");
地图服务国家/地区
=新HashMap();
用于(Alarmdiensten dienst:diensten){
List List=servicesInCountry.get(dienst.landcode);
if(list==null){
列表=新的ArrayList();
服务国家/地区放置(dienst.landcode,列表);
}
列表。添加(dienst);
}
//……后来
List servicesInSweden=servicesInCountry.get(“SWE”);

只需在列表上迭代:

String landcode = getLandCode();
for (Alarmdiensten dienst:diensten) {
  if (dienst.landcode.equals(landcode)) {
    // do what has to be done
  }
}
如果必须更频繁地查找值,请考虑使用映射而不是列表:

Map<String, List<Alarmdiensten>> servicesInCountry 
                   = new HashMap<String, List<Alarmdiensten>>();
for (Alarmdiensten dienst:diensten) {
  List<Alarmdiensten> list = servicesInCountry.get(dienst.landcode);
  if (list == null) {
     list = new ArrayList<Alarmdiensten>();
     servicesInCountry.put(dienst.landcode, list);
  }
  list.add(dienst);
}

// ... and later on
List<Alarmdiensten> servicesInSweden = servicesInCountry.get("SWE");
地图服务国家/地区
=新HashMap();
用于(Alarmdiensten dienst:diensten){
List List=servicesInCountry.get(dienst.landcode);
if(list==null){
列表=新的ArrayList();
服务国家/地区放置(dienst.landcode,列表);
}
列表。添加(dienst);
}
//……后来
List servicesInSweden=servicesInCountry.get(“SWE”);

目前,您已经有了Alarmdiensten对象的ArrayList。我建议您可能希望将其更改为地图,以便存储一张土地代码与Alarmdiensten对象的地图

这样,您就可以使用landcode从地图中获取Alarmdiensten,然后只需在Alarmdiensten对象上调用getPolitie()etc方法

我会确保封装Alarmdiensten对象,顺便说一句,直接访问它的私有成员有点不允许:)

比如:

protected Map<String, Alarmdiensten> getAlarmdiensten()
{
  Map<String, Alarmdiensten> alarmNumbersForCountries 
                                             = new HashMap<String, Alarmdiensten>();

  try
  {
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = builder.parse(getAssets().open("alarmdiensten.xml"));
    NodeList nl = doc.getElementsByTagName("land");
    for (int i = 0; i < nl.getLength(); i++)
    {
      Node node = nl.item(i);
      Alarmdiensten land = new Alarmdiensten();

      land.setLand(Xml.innerHtml(Xml.getChildByTagName(node, "naam")));
      land.setLandcode(Xml.innerHtml(Xml.getChildByTagName(node, "code")));
      land.setPolitie(Xml.innerHtml(Xml.getChildByTagName(node, "politie")));
      land.setAmbulance(Xml.innerHtml(Xml.getChildByTagName(node, "ambulance")));
      land.setBrandweer(Xml.innerHtml(Xml.getChildByTagName(node, "brandweer")));
      land.setTelamba(Xml.innerHtml(Xml.getChildByTagName(node, "telamba")));
      land.setAdresamba(Xml.innerHtml(Xml.getChildByTagName(node, "adresamba")));

      alarmNumbersForCountries.put(land.getLandCode(), land);
    }
  } 
  catch (Exception e)
  {
    // Handle Exception
  } 
  return alarmNumbersForCountries;
}

YMMV的另一个观点是,您可能希望将方法中从XML解析构建Alarmdiensten对象的部分分离出来。“每个方法都应该做好一件事和一件事。”

目前,您已经有了Alarmdiensten对象的ArrayList。我建议您可能希望将其更改为地图,以便您存储一张土地代码与Alarmdiensten对象的地图

这样,您就可以使用landcode从地图中获取Alarmdiensten,然后只需在Alarmdiensten对象上调用getPolitie()etc方法

我会确保封装Alarmdiensten对象,顺便说一句,直接访问它的私有成员有点不允许:)

比如:

protected Map<String, Alarmdiensten> getAlarmdiensten()
{
  Map<String, Alarmdiensten> alarmNumbersForCountries 
                                             = new HashMap<String, Alarmdiensten>();

  try
  {
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = builder.parse(getAssets().open("alarmdiensten.xml"));
    NodeList nl = doc.getElementsByTagName("land");
    for (int i = 0; i < nl.getLength(); i++)
    {
      Node node = nl.item(i);
      Alarmdiensten land = new Alarmdiensten();

      land.setLand(Xml.innerHtml(Xml.getChildByTagName(node, "naam")));
      land.setLandcode(Xml.innerHtml(Xml.getChildByTagName(node, "code")));
      land.setPolitie(Xml.innerHtml(Xml.getChildByTagName(node, "politie")));
      land.setAmbulance(Xml.innerHtml(Xml.getChildByTagName(node, "ambulance")));
      land.setBrandweer(Xml.innerHtml(Xml.getChildByTagName(node, "brandweer")));
      land.setTelamba(Xml.innerHtml(Xml.getChildByTagName(node, "telamba")));
      land.setAdresamba(Xml.innerHtml(Xml.getChildByTagName(node, "adresamba")));

      alarmNumbersForCountries.put(land.getLandCode(), land);
    }
  } 
  catch (Exception e)
  {
    // Handle Exception
  } 
  return alarmNumbersForCountries;
}

YMMV的另一个观点是,您可能希望将方法中从XML解析中构建Alarmdiensten对象的部分分离出来。“每个方法都应该做好一件事和一件事。”

Tnx我使用了Martijd提供的示例映射示例,它可以工作:)Tnx我使用了Martijd提供的示例映射示例,它可以工作:)