-1

次の形式のデータを含むテーブルがあります。

ここに画像の説明を入力

次の XML 形式に入る必要があります。

<People>
     <Person>
          <FirstName>Mark</FirstName>
          <LastName>Smith</LastName>
          <PhoneNumbers>
               <PhoneNumber>
                    <Number>555-123-4567</Number>
                    <Type>Home</Type>
               </PhoneNumber>
               <PhoneNumber>
                    <Number>555-321-7654</Number>
                    <Type>Cell</Type>
               </PhoneNumber>
          <PhoneNumbers>
     <Person>
     <Person>
          <FirstName>Tim</FirstName>
          <LastName>Johnson</LastName>
          <PhoneNumbers>
               <PhoneNumber>
                    <Number>444-123-4567</Number>
                    <Type>Home</Type>
               </PhoneNumber>                   
          <PhoneNumbers>
     <Person>
     <Person>
          <FirstName>Larry</FirstName>
          <LastName>Walker</LastName>
          <PhoneNumbers>
               <PhoneNumber>
                    <Number>333-123-4567</Number>
                    <Type>Home</Type>
               </PhoneNumber>
               <PhoneNumber>
                    <Number>333-321-7654</Number>
                    <Type>Cell</Type>
               </PhoneNumber>
          <PhoneNumbers>
     <Person>

これを行うためのベストプラクティスの方法を見つけようとしています。残念ながら、テーブルの行を 1 つずつ読み取らなければならないため、プロセスに手を縛られています。

4

1 に答える 1

1

JAXB を使用できます。テーブルを解析する方法を知っていると仮定します。

@XmlRootElement(name="People")
@XmlAccessorType(XmlAccessType.FIELD)
class People {
    @XmlElement(name = "Person")
    private List<Person> persons = new ArrayList<Person>();

    public void addPerson(Person person) {
        persons.add(person);
    } 
}

@XmlAccessorType(XmlAccessType.FIELD)
class Person {
    String FirstName;
    List<PhoneNumber> PhoneNumber;
}

@XmlAccessorType(XmlAccessType.FIELD)
class PhoneNumber {
    String Number;
    String Type;
}

public class Test {

    public static void main(String args[]) throws Exception {
        PhoneNumber phoneNumber = new PhoneNumber();
        phoneNumber.Number = "555-555-555";
        phoneNumber.Type = "Home";

        Person person = new Person();
        person.FirstName = "Peter";
        person.PhoneNumber = Arrays.asList(phoneNumber, phoneNumber);

        People people = new People();
        people.addPerson(person);
        people.addPerson(person);

        StringWriter s = new StringWriter();
        JAXB.marshal(people, s);

        System.out.println(s);
    }
}

コードの見栄えを良くするためにリアクタリングが必要であることに注意してください

于 2012-11-21T04:13:16.347 に答える