Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Форматирование XML (https://javascript.ru/forum/misc/14999-formatirovanie-xml.html)

slivka_83 09.02.2011 11:56

Форматирование XML
 
Добрый день.

Имеется XML-структура в виде сплошной текстовой стороки. Подскажите пожалуйста скриптик который привел бы данную стоку в форматированный вид (в textarea).

Т.е. есть строка:
Код:

<root><node1>234</node1><subnode><node2>sdf</node2></subnode></root>
а надо вывести в textarea так:
Код:

<root>
  <node1>234</node1>
  <subnode>
      <node2>sdf</node2>
  </subnode>
</root>


ksa 09.02.2011 11:59

Цитата:

Сообщение от slivka_83
Подскажите пожалуйста скриптик

Как вариант...
http://jsbeautifier.org/

slivka_83 09.02.2011 12:02

Спасибо конечно :) Но нужен JS :) и офлайн :)

Gvozd 09.02.2011 12:25

в любой пристойной IDE можно сделать Format Code, и она расставит пробелы-переводы строк в файле, отформатировав его адекватным образом

slivka_83 09.02.2011 12:51

Не знаю что такое IDE :) а что такое "пристойная IDE" тем более :) мне бы скриптик... :)

Gvozd 09.02.2011 13:14

Цитата:

Сообщение от slivka_83
Не знаю что такое IDE а что такое "пристойная IDE" тем более

гугл в помощь, лентяй
Цитата:

Сообщение от slivka_83
мне бы скриптик...

напишите сами
в чем проблема-то?

slivka_83 09.02.2011 13:18

Цитата:

Сообщение от Gvozd (Сообщение 91697)
гугл в помощь, лентяй

Обзываться не хорошо! :-/

П.С. и как Вам в голову пришло, что я прошу JS скрипт (т.е. работающий на клиенте), а Вы мне прделагаете поставить VS (например)... или мне нада ставить ее у каждого пользователя и писать инструкцию по форматированию ... :) :) :)
Цитата:

напишите сами
в чем проблема-то?
Дело не в проблеме, а в оптимизации труда :) Если уже где-то есть (долго искал - не нашел), то зачем тратить время на разработку :)

Gvozd 09.02.2011 13:28

Цитата:

Сообщение от slivka_83
П.С. и как Вам в голову пришло, что я прошу JS скрипт (т.е. работающий на клиенте), а Вы мне прделагаете поставить VS (например)... или мне нада ставить ее у каждого пользователя и писать инструкцию по форматированию ...

И вправду. Как это мне могло прийти в голову, что вы просите JS скрипт.
Пожалуйста пройдите повторно школьный курс языка
Цитата:

Сообщение от slivka_83
Но нужен JS и офлайн

вы уж определитесь что вам нужно.
Если вы собираетесь запускать этот функционал не только у себя на компе, то это он-лайн.
Если же вы собираетесь запускать только у себя, то это офф-лайн

Цитата:

Сообщение от slivka_83
Дело не в проблеме, а в оптимизации труда Если уже где-то есть (долго искал - не нашел), то зачем тратить время на разработку

Вам же уже дали этот скрипт.
Сервис который вам указали написан на JS.
Осталось только забрать оттуда скрипты и использовать их.
Цитата:

Сообщение от slivka_83
то зачем тратить время на разработку

меньше часа при минимальном знании языка

slivka_83 09.02.2011 13:39

Цитата:

Сообщение от Gvozd (Сообщение 91700)
вы уж определитесь что вам нужно.
Если вы собираетесь запускать этот функционал не только у себя на компе, то это он-лайн.
Если же вы собираетесь запускать только у себя, то это офф-лайн

А про локальную сеть когда-нибудь слышали? :)
Цитата:

Вам же уже дали этот скрипт.
Сервис который вам указали написан на JS.
Осталось только забрать оттуда скрипты и использовать их.
Вы сами то видали какое там количество кода? :)
Цитата:

меньше часа при минимальном знании языка
ну ни при минимально... не надо упрощать :)

Gvozd 09.02.2011 14:08

Цитата:

Сообщение от slivka_83
Вы сами то видали какое там количество кода?

видел.
Вполне достойная оплата за лень.
Да, и раз вы собираетесь показывать свой сервис в локалке, то какое значение имеет сотня килобайт?
Цитата:

Сообщение от slivka_83
ну ни при минимально... не надо упрощать

Мой опыт изучения JS подсказывает мне, что все так и есть.
При условиях:
- у вас есть средние навыки программирования вообще
- у вас есть желание сделать эту задачу. и вы делаете а не ноете.
вы уже два часа потратили впустую.
даже если я упрощаю, и новичку нужно больше времени чем час, вы бы уже могли сделать этот скрипт

slivka_83 09.02.2011 14:22

Уфффф... куда то тема ушла в сторону. Если Вам не известно готовое решение (более "точеченое") подождем еще :) может кто встречал... :)

Gvozd 09.02.2011 21:03

Цитата:

Сообщение от slivka_83
Если Вам не известно готовое решение (более "точеченое")

неизвестно. но писать его пять минут.
И естественно я для вас его писать не буду, потому что форум вовсе не для этого предназначен
Если вы хотите сами написать данный скрипт, вот базовый перечень статей, где содержится материал необходимый для написания данного скрипта:
http://javascript.ru/tutorial/dom
http://innerhtml.ru/
http://javascript.ru/String/replace (первый аргумент - RegExp, второй - "умная" функция замены)

А если вы хотите чтобы за вас написали скрипт, или загуглил, то вам в раздел работа.
Бездельникам здесь не место

with-love-from-siberia 10.02.2011 10:32

Цитата:

Сообщение от slivka_83 (Сообщение 91681)
Добрый день.

Т.е. есть строка:
Код:

<root><node1>234</node1><subnode><node2>sdf</node2></subnode></root>
а надо вывести в textarea так:
Код:

<root>
  <node1>234</node1>
  <subnode>
      <node2>sdf</node2>
  </subnode>
</root>


Переделать текст вида, как в первом примере в нечто более читабельное, например, хотя бы как это:
Код:

<root>
<node1>234</node1>
<subnode>
<node2>sdf</node2>
</subnode>
</root>

не представляет никаких-сложностей. Если Вы умеете писать, Вам это по плечу. При чем, в большинстве языков реашается в 1-3 строки.

monolithed 10.02.2011 21:04

slivka_83, даю наводку:
alert('<root><node1>234</node1><subnode><node2>sdf</node2></subnode></root>'.replace(/>(?=<)/g, '$&\n'));

Только в для реального форматирования нужно работать с DOM
А готовых решений для форматирования кода в сети дополна, учитесь пользоваться поиском.

Davidok95 06.05.2012 12:44

Функция для форматирования xml
 
formatXml = function(str, brouser) {
var bufStr = "";
str = str.replace(/></g, ">\n<");
str = str.replace(/>$/g, ">\n")
var arr = str.match(/<.*?>.*?\n/gim);
var p = /<[^/].*>/i;
var p1 = /<(.*?)>.*?<\/(\1)>/i;
var p2 = new RegExp("^<[/]{1}.*>", "i");
var dy = "";
for (var i=0; i<arr.length; i++) {
if (p2.test(arr[i])) {
dy = dy.substring(0, dy.length-3);
}
bufStr += dy+arr[i];
if (p.test(arr[i])) {
if (p1.test(arr[i])) {} else
dy += " ";
}
}
var p3 = /</g;
var p4 = />/g;
if (brouser) {//экранируем строки для вывода в браузер
bufStr = bufStr.replace(p3, "&lt");
bufStr = bufStr.replace(p4, "&gt");
bufStr = "<pre>"+bufStr+"</pre>";
}
return bufStr;
}

Раед 06.05.2012 13:13

Цитата:

Сообщение от slivka_83
в любой пристойной IDE можно сделать Format Code

А не посоветуете какую-нибудь "пристойную IDE"

Gvozd 06.05.2012 13:36

Раед,
1) Netbeans
Исходный файл> формат
2) Notepad++ + Xml Tools(форматирует только валидный XML - куски XML_а не умеет обрабатывать)
Где-то в меню работы с плагинами
3) Visual Studio c установленным Web Tools(хотя может он и не нужен для этого) + Resharper 6.1 предоставляет два различных способа:
Edit>Advanced>Format Document
Resharper>Tools>Clean Up Code...

Это из тех IDE/редакторов где я пользовался этой функцией.
А так присоединяюсь, к мнению, что в любой развитой IDE обычно есть опция форматирования исходников для тех языков с которыми она работает, то есть не только для XML, но и для программного кода


Часовой пояс GMT +3, время: 14:42.