Erro no parse de um arquivo XML

2 respostas
G

Caros amigos,

Estou com problema para ler um arquivo XML.

No início do meu arquivo XML tem um arquivo com sufixo “.dtd”, e é
justamente esse arquivo que está dando erro.

meu XML :

<?xml version=“1.0” encoding=“utf-8” ?>
<!DOCTYPE VOXLANS SYSTEM “C:\VOXLANS\BIN\VOXconfg.dtd”>
<VOXLANS version=“2.0.0”>
<MANAGEMENT>
<StartMode>audio</StartMode>
<LOG>8</LOG>
<ScreenOnAudio>yes</ScreenOnAudio>
<PlaybackTime>1</PlaybackTime>
<PlaybackRepeatLimit>3</PlaybackRepeatLimit>
<ClearCacheOnBoot>always</ClearCacheOnBoot>
</MANAGEMENT>
<FILELIST>
<Keyboard port=“50000”>VXKB001.DLL</Keyboard>
<Video port=“50001”>VXVD001.DLL</Video>
<Headset port=“50002”>VXHS001.DLL</Headset>
</FILELIST>
</VOXLANS>

Msg de erro : “External entity not
found: “file:/D:/Projetos/Java/Voxlans/C:\VOXLANS\BIN\VOXconfg.dtd”.”

Observação: O arquivo VOXconfg.dtd está no diretório correto.

o método que lê o arquivo XML :

public static int lePorta(String sTagPerif) throws Exception

{

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse( D:\Projetos\Java\Voxlans\VOXconfg.xml );
Element elem = doc.getDocumentElement();

// pega o elemento sTagPerif do XML.

NodeList node = elem.getElementsByTagName( sTagPerif );

// pega os atributos de sTagPerif

Element tag = (Element) node.item( 0 );

int iPort = Integer.parseInt( tag.getAttribute( port ) );

return iPort;
}

Importante: Quando coloco o arquivo “VOXconfg.dtd” no mesmo diretório do XML, mudando logicamente a linha do XML para <!DOCTYPE VOXLANS SYSTEM “VOXconfg.dtd”>, FUNCIONA.
Porém, preciso que o arquivo VOXconfg.dtd fique naquele diretório (C:\VOXLANS\BIN). Como faço ?

Obrigado.

Um abraço.

2 Respostas

J

O que você informa no DOCTYPE é uma URL, portanto, precisa do protocolo:

&lt;!DOCTYPE VOXLANS SYSTEM "file&#58;//C&#58;/VOXLANS/BIN/VOXconfg.dtd"&gt;
G

[quote=“jairelton”]O que você informa no DOCTYPE é uma URL, portanto, precisa do protocolo:

&lt;!DOCTYPE VOXLANS SYSTEM "file&#58;//C&#58;/VOXLANS/BIN/VOXconfg.dtd"&gt;

Olá.
Fiz o teste e ocorreu o seguinte erro:
External entity not found: “file://C:/VOXLANS/BIN/VOXconfg.dtd”

Daí, mudei o para
<!DOCTYPE VOXLANS SYSTEM “file:C:/VOXLANS/BIN/VOXconfg.dtd”>
e Funcionou, muito obrigado.

Criado 2 de outubro de 2006
Ultima resposta 2 de out. de 2006
Respostas 2
Participantes 2