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 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, время: 23:02.