gpt4 book ai didi

java - 通过 Java 枚举值填充 XML 文件中的属性值

转载 作者:行者123 更新时间:2023-12-01 08:56:14 25 4
gpt4 key购买 nike

我有几个 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>

在这种特殊情况下,我想为用户提供通过复选框取消/激活对特定列的搜索的选项。为了标识这些字段,我想给它们一个唯一的标识符(此处使用属性allowDisableSearchId)。使用此 ID,可以预先选择(甚至不选择)此复选框。

问题是,当我设置我可能监督的名称时,唯一的名称已经在其他文件中泄露了。除此之外,如果我想概述现有的唯一 ID(例如用于设置首选项),我需要在所有 xml 文件中搜索此属性。

现在,我想知道是否有这样的技术,比如我在java中定义一个枚举并通过枚举值设置值。例如,枚举:

public enum ALLOWDISABLESEARCHID {
MasterExternalIdentifier,
MasterName
}

然后在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 - 通过 Java 枚举值填充 XML 文件中的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42022186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com