Как разобрать строку в которой xml. Android - PullRequest
0 голосов
/ 08 ноября 2019

Как я могу получить нужные мне данные из строки xml? Это моя строка

String a="<?xml version=\"1.0\"?>\n" +
            "<answer>\n" +
            "\t<name>Винт DIN 965 М4*16(2000 шт)</name>\n" +
            "\t<balance>Отсутствует</balance>\n" +
            "\t<code>00-00000029</code>\n" +
            "</answer>"

Как я могу получить <name>,<balance>,<code> в разных переменных? Я могу получить все ответы в одной строке (String b=" Винт DIN 965 М4*16(2000 шт) Отсутствует 00-00000029 "), но мне нужно получить в другой строке String one="Винт DIN 965 М4*16(2000 шт)" String two ="Отсутствует", String thr="00-00000029". Извините за мой английский)

Этот код я пробовал

DocumentBuilder newDocumentBuilder = null;
                try {
                    newDocumentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
                } catch (ParserConfigurationException e) {
                    e.printStackTrace();
                }
                Document parse = null;
                try {
                    parse = newDocumentBuilder.parse(new InputSource(new StringReader(answer)));
                } catch (SAXException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }Винт DIN 965 М4*16(2000 шт)
    Отсутствует
    00-00000029`enter code here`
System.out.print(parse.getFirstChild().getTextContent();)  // Винт DIN 965 М4*16(2000 шт) Отсутствует 00-00000029

1 Ответ

0 голосов
/ 08 ноября 2019

Ответ на мой вопрос



                                        XPathFactory xpathFactory = XPathFactory.newInstance();
                                        XPath xpath = xpathFactory.newXPath();
                                        InputSource source = new InputSource(new StringReader(ss));

                                        Document doc = (Document) xpath.evaluate("/", source, XPathConstants.NODE);
                                        postName = xpath.evaluate("/answer/name", doc);
                                        postBalance = xpath.evaluate("/answer/balance", doc);
                                        String bal = xpath.evaluate("/answer/code", doc);
                                        tvPost.setText(postName);
                                        tvPostBalance.setText(postBalance);

                                    } catch (XPathExpressionException e) {
                                        e.printStackTrace();
                                    }
...