Java e XML - Como ler essa subestrutura?

Pessoal estou lendo um arquivo XML onde estão representadas Classes e instancias de classe.

Os dados da classe eu não tive dificuldade, pois é parecido com o do tutorial que tem aqui no fórum. Mas a estrutura da instancia é um pouco mais complexa, será que alguem pode me dar um luz

Tenho a seguinte estrutura da instancia representada em xml:

<!-- Instância de Banco de Dados -->
	<simple_instance>
		<name>OntoXML01_Instance_19</name>
		<type>Banco de Dados</type>
		<own_slot_value>
			<slot_reference>Defini&#231;&#227;o</slot_reference>
			<value value_type="string">Bando de Dados é uma estrutura .........</value>
		</own_slot_value>
		<own_slot_value>
			<slot_reference>Nome</slot_reference>
			<value value_type="string">Banco de Dados</value>
		</own_slot_value>
		<own_slot_value>
			<slot_reference>Palavras Chaves</slot_reference>
			<value value_type="string">modelagem conceitual</value>
			<value value_type="string">modelagem relacional</value>
			<value value_type="string">projeto f&#237;sico</value>
			<value value_type="string">projeto l&#243;gico</value>
		</own_slot_value>
		<own_slot_value>
			<slot_reference>&#193;reas Relacionadas</slot_reference>
			<value value_type="string">Engenharia de Software</value>
                                         <value value_type="string">Sistemas Distribuidos</value>


		</own_slot_value>
	</simple_instance>

As informações que eu preciso pegar são o Type (Consegui pegar.) A Definição (Tambem consigo pegar), mas como faço para pegar as Palavras Chaves e as Áreas Relacionada, já que possuem vários valores ?

Obrigado

Dê uma olhada aqui:



Gente estou tentando rodar no Eclipse, o exemplo que está no tutorial do sebundo link acima (Web.xml).

Os imports

import org.jdom.;
import org.jdom.input.
;
import org.jdom.output.*;

e os metodos ficam todos sublinhados em vermelhos.

Alguem pode mne ajudar? :roll:

você vai precisar achar esses “jars” (bibliotecas).

clica com o botão direito do mouse em cima do teu projeto, no Package Explorer >> Properties >> Java Build Path >> Aba Libraries >> Add External Jars

e indica quais jars ele tem que usar para compilar teu projeto

Se você não souber, dá uma procurada no google sobre “org.jdom.output e org.jdom.input” e baixa, vê se você tem, sei lá
Acho que deu pra entender né

Desculpe gente, dupliquei a resposta.

Sim, entendi.

Vou dar uma procurada.

Valeu.

Baixei as bibliotecas agora está dando o seguinte erro:

Add cast ‘root’

dai ele pede pra colocar:

List servlets = ((Objetc) root).getChildren(“servlet”);

e eu coloco

List servlets = ((List) root).getChildren(“servlet”);

e continua com o getChildren subilinhado e todos os outros métodos.

Pessoal,

será que alguem aqui consegue rodar esse código?
já importei a biblioteca jdom.jar até a do sax eu importei, mas não consigo rodar esse código, passei o dia toda tentando fazer isso e nada.

Socoorrooooo!

[code]
import java.io.;
import java.util.
;
import org.jdom.;
import org.jdom.input.
;
import org.jdom.output.*;

public class WarReader {

public static void main(String[] args) {

PrintStream out = System.out;

if (args.length != 1 && args.length != 2) {
  out.println("Usage: WarReader [web.xml]");
  return;
}

try {
  // Request document building without validation
  SAXBuilder builder = new SAXBuilder(false);
  Document doc = builder.build(new File(args[0]));

  // Get the root element
  Element root = doc.getRootElement();

  // Print servlet information
  List servlets = root.[b]getChildren[/b]("servlet");
  out.println("This WAR has "+ servlets.size() +" registered servlets:");
  Iterator i = servlets.iterator();
  while (i.hasNext()) {
    Element servlet = (Element) i.next();
    out.print("\t" + servlet.[b]getChild[/b]("servlet-name")
                            .getText() +
              " for " + servlet.getChild("servlet-class")
                            .getText());
    List initParams = servlet.getChildren("init-param");
    out.println(" (it has " + initParams.size() + " init params)");
  }

  // Print security role information
  List securityRoles = root.[b]getChildren[/b]("security-role");
  if (securityRoles.size() == 0) {
    out.println("This WAR contains no roles");
  }
  else {
    Element securityRole = (Element) securityRoles.get(0);
    List roleNames = securityRole.getChildren("role-name");
    out.println("This WAR contains " + roleNames.size() + " roles:");
    i = roleNames.iterator();
    while (i.hasNext()) {
      Element e = (Element) i.next();
      out.println("\t" + e.[b]getText[/b]());
    }
  }

  // Print distributed information (notice this is out of order)
  List distrib = root.getChildren("distributed");
  if (distrib.size() == 0) {
    out.println("This WAR is not distributed");
  } else {
    out.println("This WAR is distributed");
  }

} catch (Exception e) {
  e.printStackTrace();
}

}
}[/code]

ele vai ler o seguinte xml:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">

<web-app>
    <servlet>
        <servlet-name>snoop</servlet-name>
        <servlet-class>SnoopServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>file</servlet-name>
        <servlet-class>ViewFile</servlet-class>
        <init-param>
            <param-name>initial</param-name>
            <param-value>1000</param-value>
            <description>
                The initial value for the counter  <!-- optional -->
            </description>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>mv</servlet-name>
        <url-pattern>*.wm</url-pattern>
    </servlet-mapping>

    <distributed/>

    <security-role>
      <role-name>manager</role-name>
      <role-name>director</role-name>
      <role-name>president</role-name>
    </security-role>
</web-app>

Peguei em um tutorial que foi postado aqui.
Se alguem puder me dar uma luz eu agradeço.