Как хранить значения в массиве (Java) - PullRequest
0 голосов
/ 09 октября 2018

У меня есть таблица (REQUESTS), и она содержит 1 столбец (XML_DATA) для xmls.

Так что, если ID=123 имеет строку в этой таблице, она должна получить соответствующий xml.

Если xml был получен, мне нужно получить все значения с тегом <Mobile>0918xxxx</Mobile>.

Вот что у меня есть:

for (int i = 0; i < RqeuestsDBViewData.length; i++) //GETS ROWS FROM TABLE REQUESTS
{
    xmlDetails = test.getDetailsFromXML(mCustUtils, RequestDBViewData[i]); //GETS XML FROM XML_DATA
    String strXmlDetails;
    String strMob;
        if (!AppUtils.isEmpty(xmlDetails)) //IF IT HAS ROW, THEN GET RECORD FROM <MOBILE></MOBILE> TAG
        {
             strXmlDetails = xmlDetails.toString(); //ENTIRE XML
             strMob = StringUtils.substringBetween(strXmlDetails, "<Mobile>", "</Mobile>"); //GETS MOBILE VALUE
        }

Теперь, еслисуществует более 1 <Mobile></Mobile>,

, мне нужно сохранить его в массиве, используя цикл for.

Как мне сохранить несколько значений strMob в массиве?

После разбивки всех возможных strMob я планирую присвоить значения где-нибудь еще, например: personalInfo[j].setMobile(array/list[j]);

Любые предложения о том, как это сделать?

1 Ответ

0 голосов
/ 09 октября 2018

Используйте правильный инструмент XML для чтения вашего XML.

Вариант 1

Используйте Джексона для анализа вашего XML с подготовленным объектом Java .Это также будет работать для массивов.

Вариант 2

Чтение XML в объект DOM

public static Element getDocument(String xmlString) {
    return getDocument(new ByteArrayInputStream(xmlString.getBytes()));
}

public static Element getDocument(InputStream inputStream) {
    try {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = factory.newDocumentBuilder();
        Document doc = docBuilder.parse(new BufferedInputStream(inputStream));
        Element root = doc.getDocumentElement();
        root.normalize();
        return root;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

С целью XPATH вы можете чемизвлечь ваши <Mobile> элементы.Смотрите этот ответ: Извлечение содержимого между тегами XML

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