2012-05-03 2 views
0

Я хочу создать конструктор, который принимает xml как строку, и все переменные будут заполняться из этого. Это XML создается XStream, так что я думаю, что что-то подобное будет работать, но не знаю, что добавить к левой стороне:Java-конструктор с методом, который создает экземпляр этого объекта

public xmlpacket(String xml) 
    { 
     XStream xstream = new XStream(new DomDriver()); 
     .... = (xmlpacket)xstream.fromXML(xml); 
    } 

Спасибо

+0

http://xstream.codehaus.org/tutorial.html – pap

ответ

1

Вы можете использовать статический метод.

public static XMLPacket unmarshall(String xml) { 
    XStream xstream = new XStream(new DomDriver()); 

    return (XMLPacket)xstream.fromXML(xml); 

} 

Обратите внимание, как я переименовал ваш класс. Теперь он придерживается соглашений о присвоении имен Java.

0

XStream создаст экземпляр объекта для вас. Поэтому, если вы не хотите скопировать все атрибуты созданного XStream пакета в пакет, который вы создаете, нет смысла делать это в конструкторе. Создать фабричный метод вместо:

public static XmlPacket fromXml(String xml) { 
    XStream xstream = new XStream(new DomDriver()); 
    return (XmlPacket) xstream.fromXML(xml); 
} 
1

Если вы создали необходимые классы и XSTREAM псевдонимы для тогдашних

XMLPacket packet = (XMLPacket)xstream.fromXML(xml); 

классов Но вы, вероятно, следует создать метод для этого и не делать в конструкторе.

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