XmlParser.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package io.nexilis.util;
  2. import org.w3c.dom.Document;
  3. import org.w3c.dom.Element;
  4. import org.w3c.dom.NodeList;
  5. import org.xml.sax.SAXException;
  6. import javax.xml.parsers.DocumentBuilder;
  7. import javax.xml.parsers.DocumentBuilderFactory;
  8. import javax.xml.parsers.ParserConfigurationException;
  9. import java.io.IOException;
  10. import java.io.InputStream;
  11. import java.nio.file.Files;
  12. import java.nio.file.Path;
  13. import java.nio.file.Paths;
  14. public class XmlParser {
  15. public static void main(String[] args) {
  16. try {
  17. Path file = Paths.get("./libs/AndroidManifest.xml");
  18. System.out.println(getMainActivity(Files.newInputStream(file.toFile().toPath())));
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. public static String getMainActivity(InputStream inputStream) throws ParserConfigurationException, IOException, SAXException {
  24. DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  25. DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  26. Document doc = dBuilder.parse(inputStream);
  27. doc.getDocumentElement().normalize();
  28. NodeList activity = doc.getElementsByTagName("activity");
  29. String main = "";
  30. p:
  31. for (int i = 0; i < activity.getLength(); i++) {
  32. Element element = (Element) activity.item(i);
  33. NodeList intent = element.getElementsByTagName("intent-filter");
  34. for (int j = 0; j < intent.getLength(); j++) {
  35. Element element1 = (Element) intent.item(j);
  36. NodeList action = element1.getElementsByTagName("action");
  37. for (int k = 0; k < action.getLength(); k++) {
  38. Element element2 = (Element) action.item(k);
  39. if (element2.getAttribute("android:name").equals("android.intent.action.MAIN")) {
  40. main = element.getAttribute("android:name");
  41. break p;
  42. }
  43. }
  44. }
  45. }
  46. String[] tmp = main.split("\\.");
  47. return tmp[tmp.length - 1];
  48. }
  49. }