Unmarshal XML и сохранить в Multimapping - PullRequest
       0

Unmarshal XML и сохранить в Multimapping

0 голосов
/ 28 сентября 2018

Это мой xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<input1>
  <concept name="Rad order">
    <input>varReasonForexam=Infection, post-operative;varReasonID=19666904</input>
  </concept>
  <concept name="Inpatient Encounter">
    <input>varFirstName=park123a;varLastName=sssrk123a;varSex=Male</input>
  </concept>
</input1>

Это мой Concept.java класс

public class Concept {
    private String input;
    private String name;
    public Concept() {} 

    public String getinput() {  
        return input;  
    }
    public void setinput(String input){  
        this.input = input;  
    }

    @XmlAttribute
    public String getname() {  
        return name;  
    }
    public void setname(String name){  
        this.name = name;  
    }
}

Это мой Input1.java класс

import java.util.List;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Input1 {    
    private List<Concept> concept;

    @XmlElement 
    public List<Concept> getconcept() {
        return concept;
    }
    public void setconcept(List<Concept> concept) {
        this.concept = concept;
    }
}

Этоосновной класс RefactorClassArray1.java

import java.io.File;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.util.ArrayList;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import java.util.Set;

public class RefactorClassArray1 {
    public static void main(String[] args) {

    ArrayList<String> thisIsAStringArray = new ArrayList<String>();
    Multimap<String, String> strMapVariables = ArrayListMultimap.create();
    try {
        JAXBContext context = JAXBContext.newInstance(Input1.class);
        Unmarshaller unmarshaller = context.createUnmarshaller();
        Input1 input = (Input1) unmarshaller.unmarshal(new File("varFile.xml"));

        List<Concept> list=input.getconcept();
        int isize = list.size();
        for(int i = 0; i < isize; i++) 
        {
            Concept concept = list.get(i);
            String strconname = concept.getname();
            String strinput= concept.getinput();
            String [] strarrinput = strinput.split(";");
            int arrsize = strarrinput.length ;
            String strinputval ;
            for (int j=0; j<arrsize; j++) {
                strinputval = strarrinput[j];
                strMapVariables.put(strconname, strinputval); 
            }
        }
        Set<String> keys = strMapVariables.keySet();
        for(String key: keys) {
            thisIsAStringArray.add(key);
        }
        System.out.println("thisIsAStringArray:" + thisIsAStringArray); 
    } catch (JAXBException e) {
        e.printStackTrace();
    }
 }
}

Выходные данные, которые я получаю:

strMapVariables: {Rad order = [varReasonForexam = Инфекция, послеоперационная, varReasonID = 19666904], стационарное столкновение= [varFirstName = park123a, varLastName = sssrk123a, varSex = Male]} thisIsAStringArray: [Рад. порядок, встреча с больными]

Мой вопрос такой:
Если я добавлю еще один вход в concept name="Rad order" в XML, это мой новый xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<input1>
  <concept name="Rad order">
    <input>varReasonForexam=Infection, post-operative;varReasonID=19666904</input>
    <input>varReasonForpain=Ipain, pelvic;varID=19666905<input>
  </concept>
  <concept name="Inpatient Encounter">
    <input>varFirstName=park123a;varLastName=sssrk123a;varSex=Male</input>
  </concept>
</input1>

ожидаемый strMapVariables вывод, как показано ниже:

strMapVariables: {Rad order = [varReasonForexam = Инфекция, послеоперационная, varReasonID = 19666904], Rad order = [varReasonForpain = Ipain, таза; varID = 19666905] стационарная встреча = [varFirstName = park123a, varLastName = sssrk123a, varSex = Male]}

хочу использоватьТолько для JAXB и отображения, почтовый код должен выводиться как набор отображений.Как этого добиться?

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