Java e XML - Como ler essa subestrutura?

7 respostas
C

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

7 Respostas

abstract

Dê uma olhada aqui:



C

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

Os imports

import org.jdom.<em>;

import org.jdom.input.</em>;

import org.jdom.output.*;

e os metodos ficam todos sublinhados em vermelhos.

Alguem pode mne ajudar? :roll:

jaboot

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é

jaboot

Desculpe gente, dupliquei a resposta.

C

Sim, entendi.

Vou dar uma procurada.

Valeu.

C

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.

C

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!

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();
    }
  }
}
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.

Criado 25 de maio de 2006
Ultima resposta 5 de jun. de 2006
Respostas 7
Participantes 3