用Java枚举值填充XML文件中的属性值

用Java枚举值填充XML文件中的属性值,java,xml,enums,Java,Xml,Enums,我有几个xml文件,稍后用java/gwt定义我的GUI表示。 例如: <?xml version="1.0" encoding="UTF-8"?> <master> <search-field>ExternalIdentifier</search-field> <search-field>Name</search-field> <attribute allowD

我有几个xml文件,稍后用java/gwt定义我的GUI表示。 例如:

<?xml version="1.0" encoding="UTF-8"?>
    <master>
        <search-field>ExternalIdentifier</search-field>
        <search-field>Name</search-field>
        <attribute allowDisableSearchId="MasterExternalIdentifier">ExternalIdentifier</attribute>
        <attribute allowDisableSearchId="MasterName">Name</attribute>
    </master>
然后在xml中使用

<?xml version="1.0" encoding="UTF-8"?>
    <master>
        <search-field>ExternalIdentifier</search-field>
        <search-field>Name</search-field>
        <attribute allowDisableSearchId="ALLOWDISABLESEARCHID.MasterExternalIdentifier">ExternalIdentifier</attribute>
        <attribute allowDisableSearchId="ALLOWDISABLESEARCHID.MasterName">Name</attribute>
    </master>

外部识别器
名称
外部识别器
名称
有了这个,我可以确定它是唯一的,并且可以在以后的java代码中引用它们


或者我还可以使用其他技术吗?

枚举的想法不会断言唯一性。我将编写一个测试,读取/src/main/resources/../下的每个xml,并解析所有属性值。 当“allowDisableSearchId”被多次使用时,测试应引发异常

package stackoverflow;

import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;

import java.io.InputStream;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.junit.Test;

public class FindDuplicateId
{
    @Test
    public void idsAreUnique() throws Exception
    {
        final Set<String> ids = new HashSet<>();
        for (final InputStream xml : findAllXml())
        {
            for (final String id : readIds(xml))
            {
                if (!ids.add(id))
                {
                    throw new IllegalStateException("Duplicate ID " + id);
                }
            }
        }
    }

    List<InputStream> findAllXml()
    {
        // TODO implement correct
        return singletonList(this.getClass()
                                 .getResourceAsStream("a.xml"));
    }

    List<String> readIds(final InputStream xml)
    {
        // TODO implement correct
        return asList("MasterExternalIdentifier", "MasterName", "MasterExternalIdentifier");
    }
}
包堆栈溢出;
导入静态java.util.Arrays.asList;
导入静态java.util.Collections.singletonList;
导入java.io.InputStream;
导入java.util.HashSet;
导入java.util.List;
导入java.util.Set;
导入org.junit.Test;
公共类FindDuplicateId
{
@试验
public void idsAreUnique()引发异常
{
最终集ID=新HashSet();
for(最终输入流xml:findAllXml())
{
for(最终字符串id:ReadID(xml))
{
如果(!ids.add(id))
{
抛出新的IllegalStateException(“重复ID”+ID);
}
}
}
}
列表findAllXml()
{
//TODO执行正确
返回singletonList(this.getClass()
.getResourceAsStream(“a.xml”);
}
列表ReadID(最终输入流xml)
{
//TODO执行正确
返回asList(“MasterExternalIdentifier”、“MasterName”、“MasterExternalIdentifier”);
}
}

带有枚举的idea不会断言唯一性。我将编写一个测试,读取/src/main/resources/../下的每个xml,并解析所有属性值。当“allowDisableSearchId”被多次使用时,测试应引发异常。
package stackoverflow;

import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;

import java.io.InputStream;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.junit.Test;

public class FindDuplicateId
{
    @Test
    public void idsAreUnique() throws Exception
    {
        final Set<String> ids = new HashSet<>();
        for (final InputStream xml : findAllXml())
        {
            for (final String id : readIds(xml))
            {
                if (!ids.add(id))
                {
                    throw new IllegalStateException("Duplicate ID " + id);
                }
            }
        }
    }

    List<InputStream> findAllXml()
    {
        // TODO implement correct
        return singletonList(this.getClass()
                                 .getResourceAsStream("a.xml"));
    }

    List<String> readIds(final InputStream xml)
    {
        // TODO implement correct
        return asList("MasterExternalIdentifier", "MasterName", "MasterExternalIdentifier");
    }
}