使用DOM解析器进行XML解析,元素来自元素

时间:2019-06-12 20:38:33

标签: xml parsing dom element

如何在元素中获取元素,以及具有多个具有相同名称的元素的Xml

。我需要会员身份状态元素,而不是会员卡状态。 getElementsByTagName将获得Membership Status,但如果Membership Status不可用,它将转到MembershipCard Status。我不要。

我正在使用getTextContent()从元素获取文本。

原始文件夹Android Studio中的

xml文件

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

代码-

String FirstName =“ FirstName”;

String Surname =“ 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());

等.........

预期结果是“仅来自会员资格状态”的文本值。如果“成员资格状态”为“不可用”,则返回null。

0 个答案:

没有答案