Получить атрибуты данного элемента XML с помощью JAVA

1

Вот файл XML:

<TestCase name="SearchPromotions" type="DDTC" recovery="false" datatable="HsbcDemoSearchPromotionstestCaseSpecificVirtualDatatable" position="0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="file://C:/New folder/VTAF/base-qa-3.0.5.2/generator/xsd/TestCase.xsd">

    <SelectedDataTableNames name="SearchData"> </SelectedDataTableNames>

    <Open page="hsbc"  ms="5000"  />
    <Click object="hsbc.Personal_Link"  />
    <Click object="hsbc.CreditCard_tab"  />
    <Call businessComponent="Global.Verify_Search">
       <Param name="HotelName_Param" value="@SearchData_link" />
    </Call>
    <CheckElementPresent object="hsbc.Img_Hotel_logo"  Identifire="Hotel_Name_PARAM:@SearchData_ResultHotelName"  fail="true"  customErrorMessage="Searched hotel name is not present in the page."  />
</TestCase>

И вот код Java, чтобы получить атрибуты из указанного элемента. Если я пытаюсь запустить, это дает исключение NullpointException. Я не знаю, чего не хватает или какая вина. Пожалуйста, кто-нибудь может мне помочь. Я прокомментировал строки, где происходит исключение:

File fXmlFile = new File("SearchPromotions.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();

Element docEle = doc.getDocumentElement();
NodeList nl = docEle.getChildNodes();

if (nl != null && nl.getLength() > 0) {
    for (int i = 0; i < nl.getLength(); i++) {
        if (nl.item(i).getNodeType() == Node.ELEMENT_NODE) {
            Element ele = (Element) nl.item(i);

            switch(ele.getNodeName()){
                case "Click":
                    System.out.println(ele);
                    //----------------
                    System.out.println(ele.getAttributes().getNamedItem("page").getNodeValue());
                    //----------------
                    break;
                default:
                    break;
            }
        }
    }
}
Теги:

2 ответа

1
Лучший ответ

Вы пытаетесь получить атрибут page элемента Click, но он содержит только атрибут object.

Таким образом, при выполнении ele.getAttributes().getNamedItem("page").getNodeValue() getNamedItem("page") возвращает null.

  • 0
    Ох черт. Это была глупая ошибка. Я спешу. Так что не мог проверить это. Сожалею. Спасибо
  • 0
    если я удалю этот вопрос, вы, ребята, потеряете представителя повторного голосования? Потому что я чувствую, что этот вопрос настолько глуп
Показать ещё 2 комментария
1

Ваши элементы

<Click object="hsbc.Personal_Link"  />
<Click object="hsbc.CreditCard_tab"  />

не имеют атрибута с именем "страница", а только атрибута с именем "объект", поэтому доступ через

ele.getAttributes().getNamedItem("page").getNodeValue();

должен привести к NullPointerException. Единственный элемент, имеющий атрибут "страница",

<Open page="hsbc"  ms="5000"  />
  • 0
    Ох черт. Это была глупая ошибка. Я спешу. Так что не мог проверить это. Сожалею. Спасибо
  • 0
    если я удалю этот вопрос, вы, ребята, потеряете представителя повторного голосования? Потому что я чувствую, что этот вопрос настолько глуп

Ещё вопросы

Сообщество Overcoder
Наверх
Меню