Fórum Validade do XML via Delphi ???? #340151
10/04/2007
0
Existem algun teste que se possa fazer em um arquivo XML , para ver se a estrtutura desse Xml esta perfeita...
Por exemplo ao tentar abri na mão um XML que foi gerado pelo ClientDataSet tenho a seguinte mensagem : retornado pelo Internet Explorer
Na mão que me refiro é dando um duplo click no Arquivo
com testar isto via delphi ????
Tipo isto
Marco Salles
Curtir tópico
+ 0Posts
12/04/2007
Marco Salles
Gostei + 0
13/04/2007
Marco Salles
as vezes a gente sozinho acha que chega a algum resultado válido , porém não passa de uma fusão a frio
´Fusão a frio ´ esquece ia ser muitas delongas
Mas o que interressa por exemplo é o seguinte
Ao gravar no xml atraves de um campo via clientDataSet o seguinte :
[b:5e784b8097]Saia De[u:5e784b8097] Cós [/u:5e784b8097]Curta Estampada[/b:5e784b8097]
Na hora de abrir na mão o Xml obtenho o erro
Ao gravar no xml atraves de um campo via clientDataSet o seguinte :
[b:5e784b8097]Saia De[u:5e784b8097] Cos [/u:5e784b8097]Curta Estampada[/b:5e784b8097]
sem o acento... o Arquivo Xml abre normalmente... [b:5e784b8097]Vexi[/b:5e784b8097]
é isto mesmo ????
Gostei + 0
13/04/2007
Massuda
<?xml version="1.0" encoding="iso-8859-1"?> ...resto do seu arquivo...
Gostei + 0
13/04/2007
Marco Salles
os arquivos xml gerados pelo meu Clintdataset estão assim inicilaizados:
[b:a80b0f9767]esses Arquivos xml gerados são todos MyBase , sen nehum banco a não ser SQL associado a ele[/b:a80b0f9767]
Eu ainda não testei , mas farei isto, > incluir manualmente esta sintasi
Obrigado....
Gostei + 0
14/04/2007
Adriano Santos
Exemplo:
Gostei + 0
14/04/2007
Marco Salles
[b:d5efe4865d]Acho que voce tem toda razão... [/b:d5efe4865d] :P Realmente o segundo parâmetro é a chave para ´Tudo´ ou quase ´Tudo´
Eu digo [b:d5efe4865d]quase tudo[/b:d5efe4865d] porque a primeira parte do tópico se refere a isto:
eu não sei se é a melhor solução , mas relendo algumas biografias , encontrei a principio o elemento [b:d5efe4865d]XMLDocument[/b:d5efe4865d]
mais ou menos assim:
[u:d5efe4865d]caminho do arquivo XML no meu diretório[/u:d5efe4865d]
O problema é que os dados do Arquivo XML que será gerado estão no ClintDataSet . Eu teria que Salva-los em um Diretorio , para ter um Caminho... e de posse deste caminho efetuar um Teste com o XMLDocument1 para saber se o XML gerado é válido ou não
Eu gostaria que este teste fossem com os [b:d5efe4865d]dados[/b:d5efe4865d] do Clientdataset , sem passar por esta etapa de salvar.. Imagine ficar salvando vários Arquivos , e fazer a verificação nesses Arquivos para saber se são válidos ou não... Parece não ser uma boa idéia
Tudo isto parece estranho , mas vou tentar explicar melhor
:cry: :cry:
[b:d5efe4865d]Ai surge uma duvida [/b:d5efe4865d], será que há pssibilidades destes ClintDataSet , por algum risco que não é de meu inteiro conhecimento , ter em seus Dados , algo que possa criar um XML que não esteja no [b:d5efe4865d]Padrão Adequado[/b:d5efe4865d] :?: :?: :?:
Ai vem alguem que conhece mais do assunto do que eu , ou mesmo que possa ter um opinião a respeito e diz o seguinte:
"Não Marco Salles , esta possibilidade não existe , a Estrutura dos Dados doClietDataSet , sempre Serão válidos .. naõ corre o Risco por exemplo de se ter um Ruptura nestas Estrutura..."
:arrow: Se for esta a opinião , da integridade da estrutura dos Dados do ClintDataSet , eu confesso que estou [u:d5efe4865d][b:d5efe4865d]me procupando a Toa[/b:d5efe4865d][/u:d5efe4865d]...
:arrow: Se por outro lado , não se tiver certeza disso , acho que devo tentar fazer esta validaçao , porque ai eu so vou sobrepor a base de dados antiga por uma nova Base de dados válida
Esta é minha Duvida , Quero finalizar o programa sem correr o Risco de ter que dar manutenção no mesmo por eventuais erros deste tipo
[b:d5efe4865d]Obrigado massuda e Adriano[/b:d5efe4865d]
Gostei + 0
22/04/2007
Sremulador
Result.async := False;
Result.resolveExternals := False;
Result.validateOnParse := True;
Result.load(FileName);
end;
{ Validate }
procedure InternalValidateXMLDoc(const Doc: IDOMDocument; const SchemaDoc: IXMLDOMDocument2; const SchemaNS: WideString);
var
MsxmlDoc: IXMLDOMDocument2;
SchemaCache: IXMLDOMSchemaCollection;
Error: IXMLDOMParseError;
begin
MsxmlDoc := DOMToMSDom(Doc);
SchemaCache := CoXMLSchemaCache40.Create;
SchemaCache.add(SchemaNS, SchemaDoc);
MsxmlDoc.schemas := SchemaCache;
Error := MsxmlDoc.validate;
if Error.errorCode <> S_OK then
raise EValidateXMLError.Create(Error.errorCode, Error.reason);
end;
procedure ValidateXMLDoc(const Doc: IDOMDocument; const SchemaLocation, SchemaNS: WideString);
begin
InternalValidateXMLDoc(Doc, LoadMSDom(SchemaLocation), SchemaNS);
end;
procedure ValidateXMLDoc(const Doc: XMLIntf.IXMLDocument; const SchemaLocation, SchemaNS: WideString);
begin
InternalValidateXMLDoc(Doc.DOMDocument, LoadMSDom(SchemaLocation), SchemaNS);
end;
procedure ValidateXMLDoc(const Doc: IDOMDocument; const Schema: IXMLSchemaDoc);
begin
InternalValidateXMLDoc(Doc, DOMToMSDom(Schema.DOMDocument), ´´);
end;
procedure ValidateXMLDoc(const Doc: XMLIntf.IXMLDocument; const Schema: IXMLSchemaDoc);
begin
InternalValidateXMLDoc(Doc.DOMDocument, DOMToMSDom(Schema.DOMDocument), ´´);
end;
end.Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)