Автор |
Сообщение |
Kindoro
Новичок
Зарегистрирован: 04.12.2006
Сообщения: 1
|
[10739]
Пн Дек 04, 2006 15:16
Чем реструктурировать XML?
Господа, в руки попал какталог ПО в XML, в котором все теги на первом уровне.
То есть выглядит это так:
<Section>Видео</Section>
<Name>Adobe Premiere</Name>
<Text>Программа для работы с видео</Text>
<H1>основные Возможности</H1>
.......
<Name>VirtualDub</Name>
.......
ну и так далее.
Надо на выходе получить структурированный XML
Типа
<Section>Видео
<Name>Adobe Premiere
<Text>Программа для работы с видео</Text>
<H1>основные Возможности</H1>
</Name>
</Section>
и так далее.
Чем можно это сделать?
|
Гость
|
[10744]
Вт Дек 05, 2006 01:26
Мда, судя по статистике этого форума можно утверждать, что желающих ЗНАТЬ КАК много, а вот ЗНАЮЩИХ практически нет
Чтож, можно толкьо пожелать успехов нам.
|
Sergiy
Аспирант
Зарегистрирован: 19.02.2005
Сообщения: 225
Откуда: Киев
|
[10756]
Ср Дек 06, 2006 01:50
Можно проделать всё на Perl
Код:
s/<Section>\s+<Name>/<Section><Name>/g;
s/<\/Name>//g;
s/<Name>/<\/Name><Name>/g;
s/<Section>/<\/Name><Section>/g;
s/<Section>\s*<\/Name>/<Section>/g;
s/<Name><\/Name>//g;
s/<\/Section>//g;
s/<Section>/<\/Section><Section>/g;
#А дальше убираем лишние теги в начале и конце корневого элемента
Хотел предложить использовать sed, но потом вспомнил что у него ограничены возможности
_________________ развлекайся и ни в чём себе не отказывай...
|
drews
Новичок
Зарегистрирован: 25.01.2007
Сообщения: 4
|
[11192]
Вт Мар 20, 2007 09:48
смотришь на дату сообщения.. и отвечать уже смысла нет
|
SuSanin
Аспирант
Зарегистрирован: 26.02.2007
Сообщения: 167
Откуда: Ижевск
|
[11193]
Вт Мар 20, 2007 10:16
Ну почему нет смысла? может кто другой зайдет посмотреть, хоть ему поможем
Лично я структурирую с помощью oXygen'а . Неплохой редактор... нормально(как настроишь) структурирует код, открывающий и закрывающий теги на одном уровне. вложенные со сдвигом относительно родительских.
Нажал одну кнопку и ..вуа-ля
|
Vasilisk
Наставник
Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
|
[11504]
Сб Июн 09, 2007 15:09
Если каждый новый тег с новой строки, то средствами MSXML делается так
Код: IXMLDOMDocument.load(AXMLName);
IXMLDOMDocument.save(AXMLName);
Все. Если же теги в одну строку, то нужно их предварительно разбить на несколько строк.
Сам я пользуюсь собственной утилиткой на JavaScript
Код: // xmlWrap.js
// Crack cmdline args
if (WScript.Arguments.length < 1)
{
WScript.echo("XML Wrap Utility\n");
WScript.echo("usage: xmlWrap inputFile");
WScript.Quit(1);
}
try
{
// attach the schema cache to a DOM
var xmlSource = new ActiveXObject("MSXML2.DOMDocument.6.0"); // Здесь используется MSXML6 если установлена версия младше, то нужно указать соответствующий ProgID
var fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.OpenTextFile(WScript.Arguments.Item(0), 1);
s = tf.ReadAll();
tf.Close();
s = s.replace(/(\>\<)/g, ">\n<");
// load XML document
xmlSource.async = false;
xmlSource.validateOnParse = false;
if (xmlSource.loadXML(s))
{
xmlSource.save(WScript.Arguments.Item(0));
WScript.echo("success");
}
else
{
WScript.echo("Instance error" );
WScript.echo("### error: " + xmlSource.parseError.reason);
WScript.echo("### source: " + xmlSource.parseError.srcText);
WScript.echo("### line: " + xmlSource.parseError.line);
}
}
catch ( e )
{
WScript.echo ( "Exception loading instance document" );
WScript.echo ( e.description );
}
_________________ С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
|