2012-03-20 51 views
1

我想向xml定义文件中添加属性根据xml文件中属性的更改更新java类中的数据

现在我希望将此更改反映到java类中。你能建议如何做到这一点。另外我想添加这个属性作为一个数据成员在它的一个java类中的getter和setter。我已经完成了。我想知道如何将xml的节点中的值分配给此类中的java属性。请只告诉我逻辑。

+0

读取属性值只是为了澄清:你想改变*源代码*或*编译的类文件*?我不清楚这一点。 – 2012-03-20 05:13:21

+0

Andreas我只是将xml的节点中的值分配给java属性的逻辑,将其分配给方法 public void init(Node node)。你能帮我解决这个问题吗?请注意,java类的成员与xml文件中的属性同步。所以请告诉我如何将节点中的值分配给java类中的相应属性。 – user1280041 2012-03-20 05:29:35

+0

基本上有一个xsd文件。我想添加一个属性到这个xsd文件。现在这个改变应该反映在一个java类dataservices.DataServicesLayout.java中,添加如下的新常量: - public static final String SERVICE ID =“serviceId”。第二个目标是在另一个java类中添加属性private String serviceId以及getter和setter方法。然后,我们需要将xml文件的节点中的值分配给java属性,方法是public void init(节点节点) – user1280041 2012-03-20 06:19:53

回答

1

由于您已经有了用于XML文件的模式,并且您希望数据类型为Java类,请考虑使用JAXB。这个XML绑定API可以自动生成模式中的类,它提供了编组和解组XML文档的方便方法。 (IAW:“转换一个XML到Java实例,反之亦然)

+0

我只是希望逻辑将xml的节点中的值分配给java属性,转换为方法 。我整理的其他要求。你能帮助这方面吗? – user1280041 2012-03-20 07:09:06

+0

没有简单的“逻辑”。如果您想自动执行此操作,请使用JAXB或最初自动生成类的框架,然后重新运行自动生成。如果你想手工完成 - 分析模式,然后分析源文件,最后是绑定规则/逻辑,然后编写字段和方法。 – 2012-03-20 07:18:33

0

尝试执行使用此代码

您attribute.xml

<attributes> 
    <attribute-list> 
      <attribute> 
       <fname>riddhish</fname> 
      <lname>chaudhari</lname> 
     </attribute> 
    </attribute-list> 
<attributes> 

类文件

public static final String ATTRIBUTE_LIST = "ATTRIBUTE_LIST"; 
public static final String ATTRIBUTE = "ATTRIBUTE"; 
public static final String FNAME = "FNAME"; 

代码。从XML文件中提取属性

Document document = null; 
NodeList nodeList = null; 
Node node = null; 

nodeList = document.getElementsByTagName("----file attributes.xml---").item(0).getChildNodes(); 
HashMap <String,Object> localParameterMap = new HashMap<String,Object>(); 

for(int i=0; i<nodeList.getLength(); i++){ 
    node = nodeList.item(i); 
    if(node.getNodeName().equals("attribute-list")){ 
     Collection objCollection = readAttributeList(node); 
     localParameterMap.put(ATTRIBUTE_LIST, objCollection); 
    } 
} 

()函数readAttributeList

private Collection readAttributeList(Node node){ 
    Collection<Object> objCollection = new ArrayList<Object>(); 
    NodeList nodeList = node.getChildNodes(); 

    for(int i=0; i < nodeList.getLength(); i++){ 
     Node subNode = nodeList.item(i); 

     if(subNode.getNodeName().equals("attribute")){ 
      NodeList attributeList = subNode.getChildNodes(); 
      HashMap <String,Object> attributeMap = new HashMap<String,Object>(); 

       for(int j=0; j<attributeList.getLength(); j++){ 
        Node attributeNode = attributeList.item(j); 

        if(attributeNode.getNodeName().equals("fname")){ 
         attributeMap.put(FNAME, attributeNode.getTextContent().trim()); 
        } 
       } 
     } 
     objCollection.add(attributeMap); 
    } 
    return objCollection; 
} 

在可变

String strfname = null; 

if(map.get(CLASS_NAME.FNAME) != null) { 
    strfname = (String)map.get(CLASS_NAME.FNAME); 
} 
+0

非常感谢Riddhish – user1280041 2012-03-21 04:23:25