2016-02-15 7 views
0

Мой титул не так уж велика, учитывая, что я не совсем уверен, что тоже о том, как слово это, но проблема в том, что я создал следующий метод:ошибка NullPointerException при извлечении строки из файла XML

private static int createItem(Document xml) throws JDOMException, IOException{ 
    Element element = xml.getRootElement(); 
    Namespace ns = element.getNamespace(); 

    String itemName = xml.getRootElement().getChild("itemName", ns).getText(); 

    Element newItem = new Element("createItem", ns); 
    newItem.addContent(new Element("shopKey", ns).addContent(key)); 
    newItem.addContent(new Element("itemName", ns).addContent(itemName)); 

    Document itemIDResponse = post("/createItem", new Document(element)); 
} 

С целью создания элемента и его подготовки к отправке его на запрос POST. У меня есть чувство, мой весь метод является неправильным, хотя, но это привело меня некоторые ошибки, которые я фиксированные, за исключением того, теперь, наконец, осталась одна последняя ошибка, которая является:

Exception in thread "main" java.lang.NullPointerException 
     at TestPostRequester.createItem(TestPostRequester.java:56) 
     at TestPostRequester.main(TestPostRequester.java:38) 

который подсвечивает строку 56:

String itemName = xml.getRootElement().getChild("itemName", ns).getText(); 

и метод, который вызывает CreateItem в моем основном методе:

int itemID = createItem(xmlDoc); 

моего файл XML выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<items xmlns="website"> 
<item> 
    <itemID>1</itemID> 
    <itemName>CupA</itemName> 
    <itemURL>none</itemURL> 
    <itemPrice>50</itemPrice> 
    <itemStock>15</itemStock> 
    <itemDescription> 
     <document> 
      A <italics> beautiful and authentic</italics> cup.Containing the     following elements: 
      <list> 
       <item>It's rich in history</item> 
       <item>Eccentrically beautiful</item> 
       <item>Organic and 100% 
             <bold>vegan</bold> 
       </item> 
      </list> 
    </document> 
</itemDescription> 

ответ

0

Вы пропускаете уровень в вашем XML иерархии. Что у вас есть:

String itemName = xml.getRootElement() 
     .getChild("itemName", ns) 
     .getText(); 

Что вы должны иметь:

String itemName = xml.getRootElement() 
     .getChild("item", ns) 
     .getChild("itemName", ns) 
     .getText(); 

XPath будет работать, как хорошо .... вы должны учитывать, что.

 Смежные вопросы

  • Нет связанных вопросов^_^