---
title: "Sekundärt xml-problem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/96868-sekundärt-xml-problem"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "AG"
published: "2004-02-08T23:57:55.000Z"
updated: "2004-02-12T00:15:02.000Z"
replies: 3
views: 309
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/96868-sekundärt-xml-problem"
---

# Sekundärt xml-problem

## #1 — AG, 2004-02-08T23:57Z

Har även ett till XML-problem jag skulle vilja ha hjälp med, även detta skall sättas in i databas.
Filen är uppbyggd enlig följande princip:

```
- <RateList>
- <Rate TimeOfRate="12noon" TypeOfRate="spot" Id="1">
  <Date>2004-02-06</Date> 
  <Country UnitName="Dollar">Australia</Country> 
  <Value InUsd="true">0.7679</Value> 
  </Rate>

- <Rate TimeOfRate="12noon" TypeOfRate="spot" Id="2">
  <Date>2004-02-06</Date> 
  <Country UnitName="Dollar">Australia</Country> 
  <Value InUsd="true">0.7679</Value> 
  </Rate>
osv...
</RateList>
```

De värden jag vill plocka ut är Date, UnitName, Country, InUSD och Value.
Vore ytterst tacksam för denna hjälp.

tack
Andreas

Permalänk: https://www.webforum.nu/p/96868

## #2 — Aleph_One, 2004-02-11T11:04Z

Så här kan du göra

```
import org.apache.crimson.jaxp.DocumentBuilderFactoryImpl;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class ParseXML3
{
	public ParseXML3() throws Exception
	{
		//Få in xmlsträngen som ett dokument på ett eller annat sätt
		Document mDocument = DocumentBuilderFactoryImpl.newInstance().newDocumentBuilder().parse("conf/ratelist.xml");
		NodeList list = XPathAPI.selectNodeList(mDocument, "/RateList/Rate");
		String date, unitName, country, inUsd, value;

		for (int i = 0; i < list.getLength(); i++)
		{
			Node node = list.item(i);
			date = XPathAPI.selectSingleNode(node, "Date").getFirstChild().toString();
			unitName = XPathAPI.selectSingleNode(node, "Country/@UnitName").getNodeValue();
			country = XPathAPI.selectSingleNode(node, "Country").getFirstChild().toString();
			inUsd = XPathAPI.selectSingleNode(node, "Value/@InUsd").getNodeValue();
			value = XPathAPI.selectSingleNode(node, "Value").getFirstChild().toString();

			System.out.println("date        " + date);
			System.out.println("unitname " + unitName);
			System.out.println("country    " + country);
			System.out.println("inusd       " + inUsd);
			System.out.println("value       " + value);
		}
	}

	public static void main(String[] args) throws Exception
	{
		new ParseXML3();
	}
}
```

Här kan du läsa mer om XPath  om hur det fungerar:
<http://java.sun.com/webservices/docs/1.3/tutorial/doc/index.html>

Permalänk: https://www.webforum.nu/p/1273020

## #3 — AG, 2004-02-11T23:31Z

Jag får tacka så mycket för hjälpen, dock har jag ett problem.
Den skriver ut  "value       \[#text: 1920\]" och country    \[#text: Venezuela\]. Hur gör jag så att den skriver ut country som en vanlig string? Dock vill jag få ut value som en double.

tack
Andreas

Permalänk: https://www.webforum.nu/p/1276447

## #4 — Aleph_One, 2004-02-12T00:15Z

Byt ut toString() mot getNodeValue() så ska det visa rätt.

```
double d = Double.parseDouble(value);
```

Tips är att alltid ha API:t framme när du sitter och kodar.. Går snabbt och enkelt att kolla upp saker då. :)
<http://java.sun.com/j2se/1.4.2/docs/api/>

Permalänk: https://www.webforum.nu/p/1276457

---

Tråden på webben: https://www.webforum.nu/amne/java/96868-sekundärt-xml-problem
