Обсуждение:Приведение xml файла к удобочитаемому виду
0 (0)
Обсуждение:Приведение xml файла к удобочитаемому виду ( Обсуждение примера 19.09.2017 05:07 )
3(2)Приведение xml файла к удобочитаемому виду (добавление отступов, переводов строк).
Запуск в командной строке, в качестве параметра имя файла (и можно необходимое число пробелов отступа). Входной файл не изменяется, а создается новый с добавкой расширения OUT.
Посмотреть пример
>> Ответитьна перл ( KaMPiLeR 17.10.2017 10:47 )
5(1)для ответов по 550п делаю так:
while($s=<>) { chomp($s); $s=~s/\<UV/\n\<UV/g; $s=~s/\<TU_OKATO/\n\<TU_OKATO/g; $s=~s/(\<\/[A-Za-z_]+>)/$1\n/g; $s=~s/encoding=\"utf-8\"/encoding=\"windows-1251\"/g; print(utf2win($s)); } sub utf2win{my($s)=@_; return''if(!defined$s)||''eq$s; my($r,$l)=('',length$s); my@uM=(0x80,0xE0,0xF0,0xF8,0xFC,0xFE); my@us=(0x00,0xC0,0xE0,0xF0,0xF8,0xFC); my@um=(0x7F,0x1F,0x0F,0x07,0x03,0x01); doo: for(my$i=0;$i<$l;){ my($c,$n,$d)=(ord(substr($s,$i++,1)),-1); for(my$j=0;$j<6;$j++){ $n=$j,$c&=$um[$j],last if($c&$uM[$j])==$us[$j]} $r.='?',next if$n<0; for(my$j=0;$j<$n;$j++){ $r.='?',next doo if$i>=$l||((($d=ord(substr($s,$i,1)))&0xC0)!=0x80); $i++;$c<<=6;$c|=($d&0x3F)} $r.='?',next if$c>0xFFFD||($c>=0xD800&&$c<=0xDFFF); if($c>1039&&$c<1104){$c=chr($c-1040+192) }elsif($c==1025){$c=chr(168) }elsif($c==1105){$c=chr(184) }elsif($c==13||$c==10||($c>31&&$c<256)){$c=chr($c); }else{$c='?'} $r.=$c} $r}
вызывать:
perl xml2p550.pl file.xml > file.xml.txt
>> Ответить