Pergunta

Estou escrevendo algum XML em C# usando o xmltextwriter do .NET Framework. Isso funciona bem. Algumas das strings que escrevo contêm o valor do caractere 5 (observe que não quero dizer o caractere '5', mas quero dizer o valor ASCII 5).

Agora, entendo pela especificação XML que esse personagem é ilegal no XML. No entanto, não me importo se é ilegal, quero isso no meu documento XML (não conforme). Isso é para que eu possa escrever uma string que possa conter alguns dados binários no documento.

OK, então System.xml.xmltextwriter escreverá esses caracteres XML ilegais OK e o codifica no XML como "&#5x;". Mas então, quero lê -los em um aplicativo C ++ usando o msxml2.saxxmlReader.6.0. Este analisador levanta um FatalError quando encontra um desses personagens.

Eu tentei modificar algumas das propriedades do analisador para fazê -lo funcionar. Entendi que o IE usava esse analisador internamente, e posso carregar o XML ilegal com o IE OK. Então, como o IE consegue analisá -lo quando não posso.

Estou esquecendo de algo? O IE usa um analisador diferente. Existe uma maneira de fazer com que o analisador msxml2.saxxmlReader.6.0 funcione? Vou precisar usar um analisador diferente (se sim, você pode recomendar um que tenha o código -fonte disponível para que eu possa corrigi -lo se não fizer o que eu quiser)?

Há uma propriedade que posso definir no analisador .NET para permitir que esses personagens ilegais sejam analisados. Acho que estou procurando um equivalente que possa usar no C ++ com o analisador sax.http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.checkcharacters.aspx

Muito obrigado,
-Scott

NOTA Não acredito que uma seção CDATA permitiria que esse personagem fosse codificado. Veja aqui:http://msdn.microsoft.com/en-us/library/ms256076(vs.85).aspx
E, mesmo que isso acontecesse. Não quero usar seções CDATA, quero usar o caractere em um valor de atributo. Eu também percebo que poderia basear -o, mas também não quero fazer isso ... quero infringir a lei, quero poder analisar XML ilegal.

Foi útil?

Solução

Não, é impossível analisar os caracteres de controle no XML.

Para ser mais preciso, isso tornaria seus documentos que os documentos mais do que-xml.

Esta é uma parte com fio da especificação. Se você deseja analisar personagens ilegais, terá que escrever seu próprio analisador não compatível.

Conforme:

http://lists.xml.org/archives/xml-dev/199804/msg00502.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top