Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
 
Option Explicit
Dim oXML
Set oXML = CreateObject("MSXML2.DomDocument.3.0")
oXML.load "in.xml"
PrettyXML oXML
oXML.save "out.xml"
 
Sub PrettyXML (oXML)
   Const cChar = " " : Const cCharCount =  2  
   Dim oNodesList, oNode
   Dim vOldLanguage, ancestorCount, aNodesList(), i, j
   vOldLanguage = oXML.getProperty ("SelectionLanguage")    
   oXML.setProperty "SelectionLanguage", "XPath"
   Set oNodesList  =  oXML.documentElement.selectNodes("descendant-or-self::*[not(ancestor-or-self::*[following-sibling::text() | preceding-sibling::text()])]")  
   ReDim aNodesList (oNodesList.length - 1,2) : i=LBound(aNodesList,1) : j=LBound(aNodesList,2)
   For Each oNode in oNodesList
     ancestorCount = oNode.SelectNodes("ancestor::*").length
     Set aNodesList(i,j+0) = oNode : aNodesList(i,j+1) = -1 : aNodesList(i,j+2) = -1
     If ancestorCount > 0 Then aNodesList(i,j+1) = ancestorCount
     If oNode.selectNodes("child::text()").length = 0 Then  aNodesList(i,j+2) = ancestorCount
     i = i+1
   Next  
   For i = LBound(aNodesList,1) To UBound(aNodesList,1)
     If aNodesList (i,j+1) <> -1 Then  aNodesList(i,j+0).parentNode.InsertBefore oXML.createTextNode(vbCrLf & String(aNodesList(i,j+1) * cCharCount, cChar)), aNodesList(i,j+0)
     If aNodesList (i,j+2) <> -1 Then  aNodesList(i,j+0).AppendChild oXML.createTextNode(vbCrLf & String(aNodesList(i,j+2) * cCharCount, cChar))
     Set aNodesList(i,j+0) = Nothing
   Next
   oXML.setProperty "SelectionLanguage", vOldLanguage
End Sub
 

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 08:44 26-11-2018 | Исправлено: Alex_Piggy, 18:29 26-11-2018
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru