根据xml文件中属性的更改,更新java类中的数据

时间:2012-03-20 04:58:47

标签: java xml

我想在xml defination文件中添加一个属性

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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文件的rading属性的代码

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);
    }
}

function()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);
}