2016-09-23 3 views
0

Я новичок в простой XML, и я бегу в проблему, и не уверен, что я делаю неправильно,SimpleXML десериализатор

У меня есть следующий XML:

<BOOK> 
    <CHAPTER> 
     <TEXTLINE /> 
     <TEXTLINE > line of text.... </TEXTLINE> 
     <TEXTLINE > line of text... </TEXTLINE> 
    </CHAPTER > 
    <CHAPTER> 
     <TEXTLINE /> 
     <TEXTLINE > line of text.... </TEXTLINE> 
    </CHAPTER > 
<BOOK> 

Мои ява clases:

@Root 
    public static class Book { 

     @ElementList(entry = "CHAPTER", inline = true) public ArrayList<ReceiptElement> chapter; 

     public ReceiptElement getChapterLines() { 
      if (this. chapter != null && this. chapter.size() > 0) 
       return chapter.get(0); 
      else 
       return null; 
     } 

    } 

    @Root 
    public static class Chapter { 

     @ElementList(entry = "TEXTLINE", inline = true) public ArrayList<TextLine> lines; 

     public ArrayList<TextLine> getLines() { 
      return this.lines; 
     } 


    } 

    public static class TextLine { 

     private String textline; 

     public TextLine(@ElementMap(entry = "TEXTLINE") String text) { 
      this.textline = text; 
     } 

     public String getTextline() { return this.textline; } 
    } 

Исключение, что я получаю:

org.simplefr amework.xml.core.ConstructorException: Параметр «» делает не матч в классе TextLine

Я попробовал несколько вариантов без удачи.

Заранее спасибо.

ответ

0

Прежде чем разбор проверить, действительно ли ваш XML. Здесь вы можете проверить в онлайн-валидатор XML: http://www.xmlvalidation.com/
Попробуйте удалить пространство между <CHAPTER> тега и заканчивается <BOOK>

Я думаю, что это исключение org.simpleframework.xml.core.ConstructorException: Parameter '' does not have a match in class TextLine потому, что вы не добавили @root к классу TextLine.

<BOOK> 
    <CHAPTER> 
    <TEXTLINE/> 
    <TEXTLINE> line of text.... </TEXTLINE> 
    <TEXTLINE> line of text... </TEXTLINE> 
    </CHAPTER> 
    <CHAPTER> 
    <TEXTLINE/> 
    <TEXTLINE> line of text.... </TEXTLINE> 
    </CHAPTER> 
</BOOK> 

Book.java

@Root 
    public class Book { 
     @ElementList(entry = "CHAPTER", inline = true) public ArrayList<Chapter> chapter; 

     public Chapter getChapterLines() { 
      if (this. chapter != null && this. chapter.size() > 0) 
       return chapter.get(0); 
      else 
       return null; 
     } 
    } 

Chapter.java

@Root 
public class Chapter { 

    @ElementList(entry = "TEXTLINE", inline = true) public ArrayList<TextLine> lines; 

    public ArrayList<TextLine> getLines() { 
     return this.lines; 
    } 
} 

TextLine.java

@Root 
    public class TextLine { 

     private String textline; 

     public TextLine(@ElementMap(entry = "TEXTLINE") String text) { 
      this.textline = text; 
     } 
     public String getTextline() { return this.textline; } 
    } 
+0

XML действителен, и я удаляю пробелы, но ничего не изменил. – Marco

+0

В вашем коде было много ошибок, внесены изменения и опубликованы, попробуйте один раз. Надеюсь, теперь это сработает. – Shaggy

+0

Лохматый, спасибо. но нет, я пытаюсь с @ROOT и не работал, все еще есть проблема, я сделал быстрый синтаксический анализ со строковым классом, но я все еще хочу понять, почему не работает с simplexml – Marco

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