2015-08-14 3 views
-1

Я новичок в java, и я хочу предоставить ключ, который является «aaa», и получить значение «bbb» из приведенного ниже XML-файла.Java значение ключа ключа Java от xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <General> 
    <add key="aaa" value="bbb"/> 
    </General> 
</configuration> 

и это мой код, который не работает:

  Properties prop = new Properties(); 
      InputStream is = new FileInputStream("c:\\propFileName.config"); 
      prop.load(is); 
      String result = prop.getProperty("aaa"); 

Пожалуйста, помогите!

+0

У вас есть контроль над структурой XML? Вы можете использовать класс «Свойства» для загрузки файлов свойств XML, но они должны быть структурированы по-разному. –

+0

У меня нет контроля над структурой xml, так как мы используем machine.config –

ответ

0

Файл, который вы разместили, - это файл xml, а введенный вами код - чтение файлов свойств. Для чтения XML-файла вам необходимо использовать XML-парсеры [DOM/SAX]. Вам нужно проанализировать элемент один за другим и получить атрибуты элемента. Файл свойств - это ничего, кроме файла с парами ключ-значение. Надеюсь, вы поняли!

+0

Я понимаю, что вы имеете в виду, но у меня есть несколько разделов

+0

Анализатор SAX будет выделять каждый найденный тег. Если у вас несколько разделов ' ..', они будут испускаться как встречающиеся. Вы должны иметь возможность получить значение каждой клавиши по мере ее выпуска. – Sid

+0

Есть ли какой-нибудь пример кода? –

2

Используйте это для такого рода XML-файлов:

try { 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder builder = factory.newDocumentBuilder(); 
    Document doc = builder.parse("E:\\temp\\dist\\filename.config"); 

    XPathFactory xPathfactory = XPathFactory.newInstance(); 
    XPath xpath = xPathfactory.newXPath(); 
    XPathExpression expr = xpath.compile("//configuration/General/add[@key]"); 
    NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); 

    for (int c = 0; c < nl.getLength(); c++) { 
     Node currentItem = nl.item(c); 
     String key = currentItem.getAttributes().getNamedItem("key").getNodeValue(); 
     String value = currentItem.getAttributes().getNamedItem("value").getNodeValue(); 
     urlList.put(key, value); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
}