Hand made XML – HTML
Sometime,appen is required to produce an Xml Document where you can’t have a good Xml parser or for perfomance you can’t use that , so you need to encode and decode it manually to produce or read a standard document.
Assuming thay you need create a simple Xml file like :
Worng Xml file :
1 2 3 4 5 6 |
<!--?xml version="1.0" encoding="ISO-8859-1"?--> Rossi Rossiglio 27/02/1973 pippo&pluto |
This file is not correct beacause you are usign some special char that is used by Xml format internally. XML has reserved characters, with standard escape sequences, termed ‘external entities’.
Correct Xml file :
1 2 3 4 5 6 |
<!--?xml version="1.0" encoding="ISO-8859-1"?--> Rossi Rossiglio 27/02/1973 pippo&pluto |
XML reserved characters :
only using this five chars you are able to pruduce correct strings for Xml statements, replacing Source char with the Xml Entity.
Source char that you need to parse | XML Entity |
quote (“) | " |
apostrophe (‘) | ' |
ampersand (&) | & |
less than (<) | < |
greater than (>) | > |
Html have the escape char too, like an ascii code. Next the html escape table :
Html escape character set :
Symbol | Code | Entity Name |
---|---|---|
€ | € | |
Space |   | |
! | ! | |
“ | " | " |
# | # | |
$ | $ | |
% | % | |
& | & | & |
‘ | ' | |
( | ( | |
) | ) | |
* | * | |
+ | + | |
, | , | |
– | - | |
. | . | |
/ | / | |
0 | 0 | |
1 | 1 | |
2 | 2 | |
3 | 3 | |
4 | 4 | |
5 | 5 | |
6 | 6 | |
7 | 7 | |
8 | 8 | |
9 | 9 | |
: | : | |
; | ; | |
< | < | < |
= | = | |
> | > | > |
? | ? | |
@ | @ | |
A | A | |
B | B | |
C | C | |
D | D | |
E | E | |
F | F | |
G | G | |
H | H | |
I | I | |
J | J | |
K | K | |
L | L | |
M | M | |
N | N | |
O | O | |
P | P | |
Q | Q | |
R | R | |
S | S | |
T | T | |
U | U | |
V | V | |
W | W | |
X | X | |
Y | Y | |
Z | Z | |
[ | [ | |
\ | \ | |
] | ] | |
^ | ^ | |
_ | _ | |
` | ` | |
a | a | |
b | b | |
c | c | |
d | d | |
e | e | |
f | f | |
g | g | |
h | h | |
i | i | |
j | j | |
k | k | |
l | l | |
m | m | |
n | n | |
o | o | |
p | p | |
q | q | |
r | r | |
s | s | |
t | t | |
u | u | |
v | v | |
w | w | |
x | x | |
y | y | |
z | z | |
{ | { | |
| | | | |
} | } | |
~ | ~ | |
Non-breaking space |   | |
¡ | ¡ | ¡ |
¢ | ¢ | ¢ |
£ | £ | £ |
¤ | ¤ | ¤ |
¥ | ¥ | ¥ |
¦ | ¦ | ¦ |
§ | § | § |
¨ | ¨ | ¨ |
© | © | © |
ª | ª | ª |
« | « | |
¬ | ¬ | ¬ |
| ­ | ­ |
® | ® | ® |
¯ | ¯ | ¯ |
° | ° | ° |
± | ± | ± |
² | ² | ² |
³ | ³ | ³ |
´ | ´ | ´ |
µ | µ | µ |
¶ | ¶ | ¶ |
· | · | · |
¸ | ¸ | ¸ |
¹ | ¹ | ¹ |
º | º | º |
» | » | » |
¼ | ¼ | ¼ |
½ | ½ | ½ |
¾ | ¾ | ¾ |
¿ | ¿ | ¿ |
À | À | À |
Á | Á | Á |
 |  |  |
à | à | à |
Ä | Ä | Ä |
Å | Å | Å |
Æ | Æ | Æ |
Ç | Ç | Ç |
È | È | È |
É | É | É |
Ê | Ê | Ê |
Ë | Ë | Ë |
Ì | Ì | Ì |
Í | Í | Í |
Î | Î | Î |
Ï | Ï | Ï |
Ð | Ð | Ð |
Ñ | Ñ | Ñ |
Ò | Ò | Ò |
Ó | Ó | Ó |
Ô | Ô | Ô |
Õ | Õ | Õ |
Ö | Ö | Ö |
× | × | × |
Ø | Ø | Ø |
Ù | Ù | Ù |
Ú | Ú | Ú |
Û | Û | Û |
Ü | Ü | Ü |
Ý | Ý | Ý |
Þ | Þ | Þ |
ß | ß | ß |
à | à | à |
á | á | á |
â | â | â |
ã | ã | ã |
ä | ä | ä |
å | å | å |
æ | æ | æ |
ç | ç | ç |
è | è | è |
é | é | é |
ê | ê | ê |
ë | ë | ë |
ì | ì | ì |
í | í | í |
î | î | î |
ï | ï | ï |
ð | ð | ð |
ñ | ñ | ñ |
ò | ò | ò |
ó | ó | ó |
ô | ô | ô |
õ | õ | õ |
ö | ö | ö |
÷ | ÷ | ÷ |
ø | ø | ø |
ù | ù | ù |
ú | ú | ú |
û | û | û |
ü | ü | ü |
ý | ý | ý |
þ | þ | þ |
ÿ | ÿ | |
Ā | Ā | |
ā | ā | |
Ă | Ă | |
ă | ă | |
Ą | Ą | |
ą | ą | |
Ć | Ć | |
ć | ć | |
Ĉ | Ĉ | |
ĉ | ĉ | |
Ċ | Ċ | |
ċ | ċ | |
Č | Č | |
č | č | |
Ď | Ď | |
ď | ď | |
Đ | Đ | |
đ | đ | |
Ē | Ē | |
ē | ē | |
Ĕ | Ĕ | |
ĕ | ĕ | |
Ė | Ė | |
ė | ė | |
Ę | Ę | |
ę | ę | |
Ě | Ě | |
ě | ě | |
Ĝ | Ĝ | |
ĝ | ĝ | |
Ğ | Ğ | |
ğ | ğ | |
Ġ | Ġ | |
ġ | ġ | |
Ģ | Ģ | |
ģ | ģ | |
Ĥ | Ĥ | |
ĥ | ĥ | |
Ħ | Ħ | |
ħ | ħ | |
Ĩ | Ĩ | |
ĩ | ĩ | |
Ī | Ī | |
ī | ī | |
Ĭ | Ĭ | |
ĭ | ĭ | |
Į | Į | |
į | į | |
İ | İ | |
ı | ı | |
IJ | IJ | |
ij | ij | |
Ĵ | Ĵ | |
ĵ | ĵ | |
Ķ | Ķ | |
ķ | ķ | |
ĸ | ĸ | |
Ĺ | Ĺ | |
ĺ | ĺ | |
Ļ | Ļ | |
ļ | ļ | |
Ľ | Ľ | |
ľ | ľ | |
Ŀ | Ŀ | |
ŀ | ŀ | |
Ł | Ł | |
ł | ł | |
Ń | Ń | |
ń | ń | |
Ņ | Ņ | |
ņ | ņ | |
Ň | Ň | |
ň | ň | |
ʼn | ʼn | |
Ŋ | Ŋ | |
ŋ | ŋ | |
Ō | Ō | |
ō | ō | |
Ŏ | Ŏ | |
ŏ | ŏ | |
Ő | Ő | |
ő | ő | |
Œ | Œ | |
œ | œ | |
Ŕ | Ŕ | |
ŕ | ŕ | |
Ŗ | Ŗ | |
ŗ | ŗ | |
Ř | Ř | |
ř | ř | |
Ś | Ś | |
ś | ś | |
Ŝ | Ŝ | |
ŝ | ŝ | |
Ş | Ş | |
ş | ş | |
Š | Š | |
š | š | |
Ţ | Ţ | |
ţ | ţ | |
Ť | Ť | |
ť | ť | |
Ŧ | Ŧ | |
ŧ | ŧ | |
Ũ | Ũ | |
ũ | ũ | |
Ū | Ū | |
ū | ū | |
Ŭ | Ŭ | |
ŭ | ŭ | |
Ů | Ů | |
ů | ů | |
Ű | Ű | |
ű | ű | |
Ų | Ų | |
ų | ų | |
Ŵ | Ŵ | |
ŵ | ŵ | |
Ŷ | Ŷ | |
ŷ | ŷ | |
Ÿ | Ÿ | |
Ź | Ź | |
ź | ź | |
Ż | Ż | |
ż | ż | |
Ž | Ž | |
ž | ž | |
ſ | ſ | |
Ŕ | Ŕ | |
ŕ | ŕ | |
Ŗ | Ŗ | |
ŗ | ŗ | |
Ř | Ř | |
ř | ř | |
Ś | Ś | |
ś | ś | |
Ŝ | Ŝ | |
ŝ | ŝ | |
Ş | Ş | |
ş | ş | |
Š | Š | |
š | š | |
Ţ | Ţ | |
ţ | ţ | |
Ť | Ť | |
ť | Ɂ | |
Ŧ | Ŧ | |
ŧ | ŧ | |
Ũ | Ũ | |
ũ | ũ | |
Ū | Ū | |
ū | ū | |
Ŭ | Ŭ | |
ŭ | ŭ | |
Ů | Ů | |
ů | ů | |
Ű | Ű | |
ű | ű | |
Ų | Ų | |
ų | ų | |
Ŵ | Ŵ | |
ŵ | ŵ | |
Ŷ | Ŷ | |
ŷ | ŷ | |
Ÿ | Ÿ | |
Ź | Ź | |
ź | ź | |
Ż | Ż | |
ż | ż | |
Ž | Ž | |
ž | ž | |
ſ | ſ |
4 risposte
Ottimo da tenere nei bookmark quando lavori con XML 😉
Bell’articolo !
E’ utile quando non usi i parser, normalmente se programmi in Java / DotNet o Delphi si tende ad utilizzare il parser dell’ambiente per evitare errori.
Principalmente può essere utile ad esempio se devi comporre XML da delle stored procedure o dei servizi ad altissime prestazioni sui socket, tipo in C++ senza Xml parser. E con milioni di richieste.
Se non ricordo male anche il carattere “/” è riservato… indica il fine tag (la data ti darebbe errore) 😉
Ciao Ascanio, in effetti devo controllare ….