Синтаксический анализ XML с использованием анализатора DOM, элемент из элемента - PullRequest
0 голосов
/ 12 июня 2019

Как получить элемент внутри элемента, также Xml, имеющий несколько элементов с одинаковым именем

.Мне нужен элемент статуса членства, а не статус членской карты.getElementsByTagName получит статус участника, но если статус членства недоступен, он перейдет в статус членства.Я не хочу этого.

Я использую getTextContent (), чтобы получить текст из элемента.

XML-файл в необработанной папке, Android Studio

<Membership>
  <Program>Fun</Program>
  <Status>CANCELLED</Status>
  <MembershipCard>
    <Country>Australia</Country>
    <Status>VALID</Status>
    <Version>10</Version>
  </MembershipCard>
</Membership>

код -

String FirstName = "FirstName";

String Surname = "Фамилия";

String Status = "Status";

String Membership = "Membership";

// отсутствует некоторые кодыздесь ........

// чтение файла из необработанной папки ...

String s = OfflineServiceClient.readRawTextFile (super.AppContext, resourceId);

    DocumentBuilderFactory builderFactory =  DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = builderFactory.newDocumentBuilder();
    InputSource is = new InputSource(new StringReader(s));
    Document doc = docBuilder.parse(is);

// ResponseBody является одним из основных элементов, который мне нужен, все элементы находятся внутри элемента ResponseBody

    if (doc != null)
    {
        NodeList nList = doc.getElementsByTagName("ResponseBody");
        if (nList.getLength() > 0)
        {
            for (int i = 0; i < nList.getLength(); i++)
            {
                Node node = nList.item(i);
                //  (node.getNodeType() == Node.ELEMENT_NODE)
                Element eElement = (Element) node;

                try
                {
                    if (eElement.getElementsByTagName(FirstName).getLength() > 0 )
                    {
                        enrollmentStatus.setFirstName(eElement.getElementsByTagName(FirstName).item(0).getTextContent());

                    if (eElement.getElementsByTagName(Surname).getLength() > 0 )
                        enrollmentStatus.setLastName(eElement.getElementsByTagName(Surname).item(0).getTextContent());

и т. Д. ..................

Ожидаемый результат - текстовое значение только из статуса членства.Если статус участника недоступен, вернуть ноль.

...