Как получить соответствующую информацию из вывода JSON? - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь разобрать файл XML в JSON.Хотя я могу успешно проанализировать с помощью HashMap, используемый мной XML-файл содержит много несоответствующей информации, которая также отражается в JSON.

Мой XML-файл - это файл топологии, в основном топология для сетевых элементов.и их соответствующие процессы.Итак, он делится на родительский и дочерний узлы.Большая часть соответствующей информации, которую я ищу, лежит на родительских узлах, и я хочу игнорировать дочерние узлы любыми способами, чтобы в JSON были доступны только родительские узлы.

Вот код, который я написал для анализа.Я пытался написать код для получения дочерних enter code here узлов, но не могу понять, как их удалить (например, какие условия я могу использовать):

static String nodeType1,nodeType;
    static String nodeName1,nodeName;
    static String nodeIP1,nodeIP;

    public static void main(String[] args) {

        try { File fXmlFile = new File("SystemTopology.txt");
          DocumentBuilderFactory dbFactory = 
          DocumentBuilderFactory.newInstance();
          DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
          Document doc = dBuilder.parse(fXmlFile);

          doc.getDocumentElement().normalize();

          NodeList nList = doc.getElementsByTagName("SNOSNE") ;
          Map<String, Object> data = new HashMap<String, Object>();

          for (int temp = 0; temp < nList.getLength(); temp++) {
              Node nNode = nList.item(temp);

              Element el = (Element) nNode;

              nodeType = el.getAttribute("snostype");
              nodeName = el.getAttribute("cimname");
              nodeIP = el.getAttribute("snoshostip");

              NodeList list = el.getChildNodes();

          for (int i = 0; i < list.getLength(); i++) {
                  Node nNode1 = list.item(i);
           if(list.item(i).getNodeType() == Node.ELEMENT_NODE){
             Element element = (Element) list.item(i);
             nodeType1 = element.getAttribute("snostype");
             nodeName1 = element.getAttribute("cimname");
         nodeIP1 = element.getAttribute("snoshostip");
                if(!nodeIP1.isEmpty()) {
                      System.out.println(nodeType1);
                      System.out.println(nodeName1);
                      System.out.println(nodeIP1);
                        }
                  } 
              }
         //Need to add conditions here that would get only child nodes    
                  if(!nodeIP.isEmpty()) {
                      data.put(nodeName, nodeType+","+nodeIP);
                  }
          }
          JSONObject json = new JSONObject(data);
          System.out.printf( "JSON: %s", json.toString(2));
    }
        catch (Exception excp)
        {
          System.out.println("topology file not found " + excp.getMessage());
        }

Файл топологии выглядит следующим образом:

    <SNOSNE cimname="EDA_01" snoshostip="1.1.1.1" snostype="EDA">
         <SNOSNE cimname="Resources" snoshostip="1.1.1.1" snostype="EDA">
         </SNOSNE>
         <SNOSNE cimname="CPU" snoshostip="1.1.1.1" snostype="EDA">
         </SNOSNE>
    ...
    ...
    ...
    </SNOSNE>

Ожидаемый вывод должен содержать только родитель с cimname = "EDA_01".И все дочерние узлы должны игнорироваться в выводе JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...