尝试将对象数组转换为 XML,无法获取对象标头



我正在使用这个XML转换器,但我没有得到对象标头来包装每个对象的属性...我在编码器类中也找不到方法来执行此操作。

代码循环访问我的数组并列出所有非 null 的对象。

FileOutputStream os = new FileOutputStream("C:\Users\David Laptop\Documents\Doc1.xml");
XMLEncoder encoder = new XMLEncoder(os);
for( int x = 0; x < people.length;x++)
  if (people[x] != null)
  {
    //header here?
    encoder.writeObject(people[x].getName());
    encoder.writeObject(people[x].getTelephoneNumber());
    encoder.writeObject(people[x].getEmailAddress());    
  }
}
encoder.close(); 

我得到这个结果:

<?xml version="1.0" encoding="UTF-8" ?> 
<java version="1.7.0_40" class="java.beans.XMLDecoder">
string
dad</string  string 35235 /string 
string email /string
</java>

如果我做更多的对象条目,那么它最终会成为一个大列表,这没有帮助,因为我想实现的另一个函数是从 XML 文件读取到数组中......任何这方面的帮助也将是有用的!

编辑:基于给出的答案的新信息:

那么,如果没有 no-arg 构造函数,就没有办法做到这一点吗?我已经将可序列化实现到两个类中以更好地衡量......我正在使用这一行添加新对象:

mybook1.addRecord(new newPerson(Name,telephoneNumber,emailAddress));  

它使用这个:

public void addRecord(newPerson c) 
{
    people[numOfRecords] = c; 
    numOfRecords++;  
}                                                               

下面是对象本身:

public class newPerson implements java.io.Serializable 
{     
private String Name; 
private String telephoneNumber; 
private String emailAddress;  
public newPerson(String n, String t, String e) 
{ //local variables n,t,e only used in this method
    Name = n;
    telephoneNumber = t;
    emailAddress = e;
}

有什么建议吗?

序列化对象实例变量将导致一个难以主的过程,您将被迫逐个解码值。

序列化整个People对象时,处理起来会更明智、更容易

FileOutputStream os = new FileOutputStream("C:\Users\David Laptop\Documents\Doc1.xml");
XMLEncoder encoder = new XMLEncoder(os);
for( int x = 0; x < people.length;x++)
  if (people[x] != null)
  {
    encoder.writeObject(people[x]);    
  }
}
encoder.close(); 

同时,你必须确保你的People类符合JavaBeans约定,这些约定基本上必须Serializable,并且应该提供一个公共的无arg构造函数。

相关内容

  • 没有找到相关文章

最新更新