2014-01-14 4 views
2

Я использую castor для создания XML-файла из java-объекта. Я хотел бы игнорировать поле в моем классе при создании файла XML.Как игнорировать поле в сортировке касторов

Документация http://castor.codehaus.org/reference/1.3.0/html/XML%20data%20binding.html говорит:

1.2.2.1. Marshalling Behavior
Для Castor класс Java должен отображаться в элемент XML. Когда Кастор маршалы объект, он будет:
- использовать информацию отображения, если таковые имеются, чтобы найти имя элемента для создания
или
- по умолчанию, создать имя, используя имя класса
It будет использовать информацию полей из файла отображения, чтобы определить, каким образом данное свойство объекта должен быть переведен на один и только один из следующих действий:
- атрибут
- элемент
- текстовое содержание
- ничего, поскольку мы можем игнорировать конкретное поле

Но как, могу ли я разместить аннотацию @IgnoreFields или что-то в этом роде? Я знаю, можно создать файл сопоставления, чтобы указать поля для преобразования.

ответ

1

Castor игнорирует поля, которые не указаны в файле сопоставления по умолчанию.

Пример: (С учетом объекта и отображение, как показано ниже)

объекта, содержащего 2 поля в то время как отображение файла только определяет отображение для 1 поля только.

public class TestObj { 
String param1; 
String param2; 

public String getParam1() { 
    return param1; 
} 
public void setParam1(String param1) { 
    this.param1 = param1; 
} 
public String getParam2() { 
    return param2; 
} 
public void setParam2(String param2) { 
    this.param2 = param2; 
}} 

Mapping File (тест-mapping.xml)

<mapping> 
<class name="TestObj"> 
    <map-to /> 
    <field name="param1" type="java.lang.String"> 
     <bind-xml name="param1" node="element" /> 
    </field> 
</class> 
</mapping> 

Тестовый код для печати XML

Marshaller marshaller = new Marshaller(); 
    Mapping mapping = new Mapping(); 
    mapping.loadMapping("test-mapping.xml"); 
    marshaller.setMapping(mapping); 
    TestObj obj = new TestObj(); 
    StringWriter writer = new StringWriter(); 
    obj.setParam1("1"); 
    obj.setParam2("2"); 

    marshaller.setWriter(writer); 
    marshaller.marshal(obj); 

    System.out.println("output:"+writer.toString()); 

Конечный результат

<test-obj> 
<param1>1</param1> 
</test-obj> 
+0

спасибо, но я не сделал хотите использовать файл сопоставления, потому что у меня много подклассов. Наконец, если вы установите поле переходного периода ключевого слова, оно может игнорироваться маршаллером в файле XML. –

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

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