Есть ли способ использовать java.util. Предпочтения в соответствии с Windows без него с помощью Реестра в качестве бэкенда?

Я бы использовал Linq Где и Содержит так:

        var xmlBody = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<Visit>
   <Person>...</Person>
   <Name>...</Name>
   <Color>...</Color>
</Visit>";
        var xdoc = XDocument.Parse(xmlBody);
        var nodeList = new List<string> { "Name", "LastName", "Color" };

        var intersectedElements = xdoc.Elements()
            .First() //<Visit>
            .Elements()
            .Where(element => nodeList.Contains(element.Name.LocalName));

        foreach (XElement child in intersectedElements)
        {
            Console.WriteLine($"{child.Name.LocalName}: {child.Value}");
        }

Если вы хотите, чтобы элементы могли быть вложены глубже, чем использовать Потомки.

        var intersectedNestedElements = xdoc.Descendants()
            .Where(element => nodeList.Contains(element.Name.LocalName));

        foreach (XElement child in intersectedNestedElements)
        {
            Console.WriteLine($"{child.Name.LocalName}: {child.Value}");
        }

Оба выхода:

Name: ...
Color: ...
17
задан Epaga 16 October 2008 в 11:52
поделиться

2 ответа

Я полагаю, что Вы читали чтение-запись к Windows Registry с помощью Java, и Вы тогда хотите иметь другой бэкенд, чем реестр при использовании java.util.Preferences API

, который Вы могли расширить Preference API, как [1 112] Bernhard или , Croft сделал, как описано в [1 114] эта статья :

, поскольку эти предпочтения API нейтральный бэкенд, Вы не должны заботиться, хранятся ли данные в файлах, таблицах базы данных или определенном для платформы устройстве хранения данных, таких как Windows Registry.

Примеры от расширений до [1 116] новый Preferences видны здесь .

, Который лучше, IMO, чем использовать другой API.

<час>

, Например, ища классы, расширяющиеся java.util.prefs.AbstractPreferences :

  • можно использовать предпочтительное хранилище, поддержанное XML-файлом:

de.unika.ipd.grgen.util.MyPreferences

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.prefs.AbstractPreferences;
import java.util.prefs.BackingStoreException;

/**
 * Own implementation of the Java preferences API, that does not use
 * a "OS backing store" but relies on importing and exporting the
 * preferences via xml files.
 * Also, If a preference is got, but was not in the tree, it is entered.
 */
public class MyPreferences extends AbstractPreferences {

    private Map<String, String> prefs = new HashMap<String, String>();
    private Map<String, AbstractPreferences> children = new HashMap<String, AbstractPreferences>();

  public MyPreferences(MyPreferences parent, String name) {
    super(parent, name);
  }

  /**
   * @see java.util.prefs.AbstractPreferences#putSpi(java.lang.String, java.lang.String)
   */
  protected void putSpi(String key, String value) {
    prefs.put(key, value);
  }
<час>
  • Или Вы могли сохранить те предпочтения в LDAP:

de.tarent.ldap.prefs.LDAPSystemPreferences

import java.util.prefs.AbstractPreferences;
import java.util.prefs.BackingStoreException;

import javax.naming.NamingException;
import javax.naming.directory.Attributes;

import de.tarent.ldap.LDAPException;
import de.tarent.ldap.LDAPManager;

/**
 * @author kirchner
 * 
 * Preferences im LDAP
 */
public class LDAPSystemPreferences extends AbstractPreferences {
    LDAPManager     ldm         = null;
    Properties      properties  = new Properties();
    //Map für key/value der Preferences
    Map             cache       = new HashMap();
    //Map für timestamp der Preferences
    Map             timestamp   = new HashMap();
    private Boolean deleted     = Boolean.FALSE;
<час>
  • Или можно использовать простой файл свойств:

com.adito.boot.PropertyPreferences:

import java.util.prefs.AbstractPreferences;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


/**
 * A simple implementation for the preferences API. That stores preferences
 * in propery files. We do not have to worry about sharing the preferencese 
 * with other JVM instance so there is no need for any kind of synchronising
 * or locking.
 */
public class PropertyPreferences extends AbstractPreferences {
13
ответ дан 30 November 2019 в 14:12
поделиться

Всегда возможно расширить java.util.prefs. AbstractPreferences.

альтернатива могла быть должна использовать пакет Конфигурации из Apache, который палата общин позволяет Вам читать и писать данным конфигурации из других источников.

3
ответ дан 30 November 2019 в 14:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: