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.