Как выбрать некоторую информацию в каком-либо теге с помощью XStream

#xstream

Вопрос:

Мне нужно выбрать некоторую информацию из XML, и я использую Xstream. Мне нужна некоторая информация из книг, но не всякая информация.

XML:

 <Origin>
 <MsgData>
  <Transaction>
   <Book class="R">
     <Title>info 1</Title>
     <Author>info 2</Author>
     <Pages>info 3</Pages>
       <other infos>some other info that i dont need </other infos>
     <Local class="R">
        ...
        more info that i dont need
        ...
     </Local>
    </Book>
  </Transaction>
 </MsgData>
</Origin>
 

Я пытался использовать ignoreUnknownElements() , но когда я преобразую XML в класс «Origin», который я создал, все атрибуты объекта равны нулю.

Как я могу это сделать?

Ответ №1:

Поэтому я использую некоторые вещи, чтобы заставить его работать. Я создал каждый класс до класса de Book, так что это так:

 public class Origin { 

  private MsgData msgData;

}

public class MsgData { 

  private Transaction transaction;

}

public class Transaction { 

  private Book book;

}

public class Book { 

 private String info1
 private String info2
 private String info3

}
 

После этого мне нужно заменить класс=»R» внутри книги тегов.
С помощью Xml я могу сделать replaceAll()

Чем просто делать alias и aliasField из созданного XStream и использовать ignoreUnknownElements() его .

В конце концов, просто сделайте актерский состав

 OriginfromXml = (Origin)xstreamCreated.fromXml(stringFromReplaceAll);
 

Это одно из решений, если у кого-то есть лучший способ сделать это, я опубликую его.