首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图将对象数组转换为XML时,无法获得对象标头

试图将对象数组转换为XML时,无法获得对象标头
EN

Stack Overflow用户
提问于 2014-11-13 13:50:45
回答 1查看 1.8K关注 0票数 1

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

代码遍历我的数组并列出所有非空对象。

代码语言:javascript
复制
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(); 

我得到这样的结果:

代码语言:javascript
复制
<?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文件中读取到数组中.在这方面的任何帮助也是有用的!

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

那么,如果没有非arg构造函数,就无法实现这一点吗?我已经在两个类中实现了Serializable,以便进行良好的度量.我使用这一行来添加新的对象:

代码语言:javascript
复制
mybook1.addRecord(new newPerson(Name,telephoneNumber,emailAddress));  

它使用以下内容:

代码语言:javascript
复制
public void addRecord(newPerson c) 
{
    people[numOfRecords] = c; 
    numOfRecords++;  
}                                                               

以下是对象本身:

代码语言:javascript
复制
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;
}

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-13 15:23:36

序列化对象实例变量将导致从主进程到主进程的困难,您将被迫逐个解码返回的值。

在序列化整个People对象时,它将更明智和更容易处理:

代码语言:javascript
复制
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类统计了基本必须是SerializableJavaBeans约定,并且应该提供一个公共的无arg构造函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26910437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档