Commit 7cb3a24
committed
pythongh-81055: Support CDATA sections in xml.etree.ElementTree
CDATA is a new factory, like Comment and ProcessingInstruction, which creates
a special element serialized as a CDATA section. Its content is character
data: it is not escaped, "]]>" in it is split between two sections, and it is
returned by itertext() and by the "text" serialization method.
TreeBuilder gets the cdata_factory and insert_cdata arguments. When
insert_cdata is set, a CDATA section in the input is kept as such instead of
being parsed as text, so that the document can be written back unchanged.
Expat reports the content of a CDATA section as ordinary character data, but
it reports the boundaries, so the builder gets the start_cdata() and
end_cdata() methods, and XMLParser calls them like comment() and pi().
_set_factories() takes the third factory, which the C implementation needs for
itertext(), and the pyexpat capsule gets SetCdataSectionHandler.1 parent d636e3c commit 7cb3a24
9 files changed
Lines changed: 586 additions & 36 deletions
File tree
- Doc
- library
- whatsnew
- Include
- Lib
- test
- xml/etree
- Misc/NEWS.d/next/Library
- Modules
- clinic
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
548 | 548 | | |
549 | 549 | | |
550 | 550 | | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
551 | 573 | | |
552 | 574 | | |
553 | 575 | | |
| |||
1051 | 1073 | | |
1052 | 1074 | | |
1053 | 1075 | | |
| 1076 | + | |
| 1077 | + | |
1054 | 1078 | | |
1055 | 1079 | | |
1056 | 1080 | | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
1057 | 1084 | | |
1058 | 1085 | | |
1059 | 1086 | | |
| |||
1270 | 1297 | | |
1271 | 1298 | | |
1272 | 1299 | | |
1273 | | - | |
| 1300 | + | |
| 1301 | + | |
| 1302 | + | |
1274 | 1303 | | |
1275 | 1304 | | |
1276 | 1305 | | |
| |||
1288 | 1317 | | |
1289 | 1318 | | |
1290 | 1319 | | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
1291 | 1330 | | |
1292 | 1331 | | |
1293 | 1332 | | |
| |||
1328 | 1367 | | |
1329 | 1368 | | |
1330 | 1369 | | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | + | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
1331 | 1390 | | |
1332 | 1391 | | |
1333 | 1392 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
648 | 648 | | |
649 | 649 | | |
650 | 650 | | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
651 | 667 | | |
652 | 668 | | |
653 | 669 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
68 | 71 | | |
69 | 72 | | |
70 | 73 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1310 | 1310 | | |
1311 | 1311 | | |
1312 | 1312 | | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
1313 | 1342 | | |
1314 | 1343 | | |
1315 | 1344 | | |
| |||
3771 | 3800 | | |
3772 | 3801 | | |
3773 | 3802 | | |
| 3803 | + | |
| 3804 | + | |
| 3805 | + | |
| 3806 | + | |
| 3807 | + | |
| 3808 | + | |
| 3809 | + | |
| 3810 | + | |
| 3811 | + | |
| 3812 | + | |
| 3813 | + | |
| 3814 | + | |
| 3815 | + | |
| 3816 | + | |
| 3817 | + | |
3774 | 3818 | | |
3775 | 3819 | | |
3776 | 3820 | | |
| |||
3904 | 3948 | | |
3905 | 3949 | | |
3906 | 3950 | | |
| 3951 | + | |
| 3952 | + | |
| 3953 | + | |
| 3954 | + | |
| 3955 | + | |
| 3956 | + | |
| 3957 | + | |
| 3958 | + | |
| 3959 | + | |
| 3960 | + | |
| 3961 | + | |
| 3962 | + | |
| 3963 | + | |
| 3964 | + | |
| 3965 | + | |
| 3966 | + | |
| 3967 | + | |
| 3968 | + | |
| 3969 | + | |
| 3970 | + | |
| 3971 | + | |
| 3972 | + | |
| 3973 | + | |
| 3974 | + | |
| 3975 | + | |
| 3976 | + | |
| 3977 | + | |
| 3978 | + | |
| 3979 | + | |
| 3980 | + | |
| 3981 | + | |
| 3982 | + | |
| 3983 | + | |
| 3984 | + | |
| 3985 | + | |
| 3986 | + | |
| 3987 | + | |
| 3988 | + | |
| 3989 | + | |
| 3990 | + | |
| 3991 | + | |
| 3992 | + | |
| 3993 | + | |
| 3994 | + | |
| 3995 | + | |
| 3996 | + | |
| 3997 | + | |
| 3998 | + | |
| 3999 | + | |
| 4000 | + | |
| 4001 | + | |
| 4002 | + | |
| 4003 | + | |
| 4004 | + | |
| 4005 | + | |
| 4006 | + | |
| 4007 | + | |
| 4008 | + | |
| 4009 | + | |
| 4010 | + | |
| 4011 | + | |
| 4012 | + | |
| 4013 | + | |
| 4014 | + | |
| 4015 | + | |
| 4016 | + | |
| 4017 | + | |
| 4018 | + | |
| 4019 | + | |
| 4020 | + | |
| 4021 | + | |
| 4022 | + | |
| 4023 | + | |
| 4024 | + | |
| 4025 | + | |
| 4026 | + | |
| 4027 | + | |
| 4028 | + | |
| 4029 | + | |
| 4030 | + | |
| 4031 | + | |
| 4032 | + | |
| 4033 | + | |
| 4034 | + | |
| 4035 | + | |
| 4036 | + | |
| 4037 | + | |
| 4038 | + | |
| 4039 | + | |
| 4040 | + | |
| 4041 | + | |
| 4042 | + | |
| 4043 | + | |
| 4044 | + | |
| 4045 | + | |
3907 | 4046 | | |
3908 | 4047 | | |
3909 | 4048 | | |
| |||
4981 | 5120 | | |
4982 | 5121 | | |
4983 | 5122 | | |
4984 | | - | |
| 5123 | + | |
4985 | 5124 | | |
4986 | | - | |
| 5125 | + | |
4987 | 5126 | | |
4988 | 5127 | | |
4989 | 5128 | | |
| |||
0 commit comments