• Авторизация


Работа с jscript и xml 30-09-2008 13:08 к комментариям - к полной версии - понравилось!


Понадобилось прочитать xml файл на jscript. Jscript не люблю за то что если где то ошибка - запаришься искать.

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


<pattern path="d:\\mypat.dot">
<attributes>
    <attribute name="enumber" value="Дог2004"/>
    <attribute name="createdon" value="21.08.2008"/>
</attributes>
<details>
    <detail name="rekvizits">
        <detailattributes>
            <detailattribute name="name" value="Юр реквизит 1" />
            <detailattribute name=""address" value="Березина 6" />
            <detailattribute name=""address1" value="Березина 7" />
        </detailattributes>
    </detail>
</details>
</pattern>

задача была прочитать теги attribute.
следующей функцией:
function doXml()
{
// JScript source code
var xml = new ActiveXObject("Microsoft.XMLDOM") //.2.6 or .3.0 or 3.0
xml.async = false;//это надо указать чтобы дождаться ответа а не начать работать над незагруженным документом. Эту опцию поставил через полчаса..

if (xml.load("D:\\XMLFile1.xml"))
{
//Enumerator позволяет бродить по коллекции с помощью методов moveNext atEnd
//метод selectNodes выбирает из файла все атрибуты с заданным названием
//!!!!перед названием атрибута нужны эти две палки // из за них парился два часа...
var ex = new Enumerator(xml.documentElement.selectNodes("//attribute"));
for (ex.moveFirst();!ex.atEnd(); ex.moveNext() )
{
var it = ex.item();
alert(it.getAttribute("name")+" . "+it.getAttribute("value"));
} //ex Collection
} // xml.load
else
{
alert("Нет файла");
}

}


Зачем все это?
Допустим нам нужно напечатать определенный шаблон документа, имея такой же xml файл.
Функция слегка меняется на следующую:

 //открываем файл шаблона
    var oWord = new ActiveXObject("Word.Application");
    var oDoc;

    oWord.Visible = 1;
    oDoc = oWord.Documents.Add("d:\\mypattern.dot");

    // JScript source code
    var xml = new ActiveXObject("Microsoft.XMLDOM") //.2.6 or .3.0 or 3.0
    xml.async = false;

    if (xml.load("D:\\XMLFile1.xml"))
    {
        var ex = new Enumerator(xml.documentElement.selectNodes("//attribute"));
        for (ex.moveFirst();!ex.atEnd(); ex.moveNext() )
        {
            var it = ex.item();
            //alert(it.getAttribute("name")+" . "+it.getAttribute("value"));
            if(oDoc.Bookmarks.Item(it.getAttribute("name")))
            {
                oDoc.Bookmarks.Item(it.getAttribute("name")).Range.Text = it.getAttribute("value");
          
            }
        } //ex Collection
    } // xml.load
    else
    {
        alert("Нет файла");
    }

Пример работает, и выводит в закладки шаблона данные, в результате из

"Данный договор №  от     подписан всеми сторонами.
Подпись_______
"
выводит что то вроде

"Данный договор № Дог2004 от  21.08.2008   подписан всеми сторонами.
Подпись_______
"
, т.е. если генерировать xml файл то можно выводить данные в ворд с веб страницы с помощью jscript и ActiveX. Просто веб странице доступ к ворду клиента скорее всего недоступен, а таким образом можно создавать документы. Полезно для всяких бланков, позволяет обходиться без отчетов.
Но возникает проблема что делать если нужные какие либо данные относящиеся к другой таблице - например строки ком предложения...


Постараюсь развить дальше, что получится напишу позднее.
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Работа с jscript и xml | Чарубаэль - Дневник | Лента друзей Чарубаэль / Полная версия Добавить в друзья Страницы: раньше»