Skip to content

Latest commit

 

History

History
100 lines (74 loc) · 7.04 KB

README.md

File metadata and controls

100 lines (74 loc) · 7.04 KB

Parser XML

Há uma variedade deles, com diferentes estratégias para apresentar o conteúdo. Por exemplo, um parser DOM carrega o documento todo em memória, o que pode ter desvantagens, por exemplo, se o arquivo for muito grande. Um parser SAX carrega partes, hierarquicamente, ... Referências:

Existem tutoriais na documentação oficial para Java 8.

Existem outros tutoriais:

Existem threads de perguntas/respostas:

Seguirei por:

O zip tem a seg. estrutura:

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/LerXMLcomJava/JavaDOMParserExamples$ tree
.
├── bin
│   └── com
│       └── howtodoinjava
│           └── dom
│               ├── Employee.class
│               ├── ParseKnownXMLStructure.class
│               ├── ParseUnknownXMLStructure.class
│               └── PopulateDTOExamplesWithParsedXML.class
├── employees.xml
└── src
    └── com
        └── howtodoinjava
            └── dom
                ├── Employee.java
                ├── ParseKnownXMLStructure.java
                ├── ParseUnknownXMLStructure.java
                └── PopulateDTOExamplesWithParsedXML.java

8 directories, 9 files

Quero saber que arquivos contém método main:

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/LerXMLcomJava/JavaDOMParserExamples$ grep -r -i main *
Arquivo binário bin/com/howtodoinjava/dom/ParseKnownXMLStructure.class coincide com o padrão
Arquivo binário bin/com/howtodoinjava/dom/ParseUnknownXMLStructure.class coincide com o padrão
Arquivo binário bin/com/howtodoinjava/dom/PopulateDTOExamplesWithParsedXML.class coincide com o padrão
src/com/howtodoinjava/dom/ParseUnknownXMLStructure.java:   public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException
src/com/howtodoinjava/dom/PopulateDTOExamplesWithParsedXML.java:   public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException
src/com/howtodoinjava/dom/ParseKnownXMLStructure.java:	public static void main(String[] args) throws Exception {
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/LerXMLcomJava/JavaDOMParserExamples$ 

Esta estrutura tem jeito de que foi feita por algum ambiente integrado, mas o autor não informa qual foi, nem qual a linha de comando que seria equivalente a compilar e executar o código. Escolhi ParseUnknownXMLStructure.java como alvo para compilar. Como tem método main, o restante do código deve ter sido organizado para que seja possível executá-lo.

Para compilar, a partir da pasta JavaDOMParserExamples, criada quando deszipei o pacote compactado, usei javac src/com/howtodoinjava/dom/ParseUnknownXMLStructure.java. O .class foi criado na mesma pasta do arquivo-fonte.

No arquivo-fonte, o pacote a que pertence é com.howtodoinjava.dom, logo, deve ser executado a partir da pasta acima de com. Desta forma a primeira tentativa de execução é java com.howtodoinjava.dom.ParseUnknownXMLStructure a partir da pasta src:

fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/LerXMLcomJava/JavaDOMParserExamples/src$ java com.howtodoinjava.dom.ParseUnknownXMLStructure 
Exception in thread "main" java.io.FileNotFoundException: /home/fabio/Documentos/ZZfiles/LerXMLcomJava/JavaDOMParserExamples/src/employees.xml (Arquivo ou diretório inexistente)
	at java.base/java.io.FileInputStream.open0(Native Method)
	at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
	at java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86)
	at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:184)
	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:652)
	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:150)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:860)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:246)
	at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
	at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:206)
	at com.howtodoinjava.dom.ParseUnknownXMLStructure.main(ParseUnknownXMLStructure.java:26)
fabio@fabio-13Z940-G-BK71P1:~/Documentos/ZZfiles/LerXMLcomJava/JavaDOMParserExamples/src$ 

A mensagem indica que o arquivo contendo o exemplo era esperado na pasta em que executei o programa (mas está na pasta acima, coisas de ambiente integrado) então vou fazer uma cópia no local esperado.

alt text

Ok, leu, conforme o tutorial que segui.

nota: removi os .class para evitar que (você) execute algo que não compilou (e pode não ser o que estão lhe dizendo).

nota: quando fui limpar as pastas para por no Github, vi alguns arquivos e pastas ocultos: .settings, .classpath e .project. Pelo conteúdo deu para ver que a IDE que o autor usou era Eclipse e usava Java 7. Removi os arquivos. Caso precise do conjunto completo de arquivos, sugiro baixar da referência original.