Как изменить значение узла XML в Jscript? - PullRequest
0 голосов
/ 05 марта 2019

Мне нужно изменить значение узла с сегодняшней датой, используя jscript

XML-файл

<?xml version="1.0" encoding="ISO-8859-1"?>
<scraping Test>
    <General>
        <FormatVersion>1</FormatVersion>
        <FromDate>2/28/2019 00:00:00</FromDate>
        <ToDate>2/28/2019</ToDate>
    </General>
</scraping Test>

Jscript (пробовал с использованием 2 методов)

var dom = new ActiveXObject("Microsoft.XMLDOM");
pathToXML = "Y:\Analysis33.xml"  ;
dom.loadxml(pathToXML);
mydate = date(); 
myVar1 = mydate & " 00:00:00" ; 
myVar2 = mydate ;

nNode = xmlDoc.selectsinglenode ("FromDate")    ;
nNode.text = myvar1 ;
strResult = xmldoc.save(pathtoxml) ;

Я пробовалMSXML2.DOM также похожий код, но не работает.

var objXML = new ActiveXObject("MSXML2.DOMDocument");

1 Ответ

0 голосов
/ 17 апреля 2019

Самая большая проблема в том, что ваш XML недействителен и не разбирается любым рецептом колдовства JScript, пока вы его не исправите.Избавьтесь от недопустимого места в вашем теге <scraping Test>.Сделайте это <scrapingTest> или <root>.

Вам также нужно выбрать узел text() в вашем XPath, а затем изменить свойство результирующего узла .data.

Кроме этого,Устраните все разногласия в коде и получите контроль над форматированием даты.Используя этот XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<scrapingTest>
    <General>
        <FormatVersion>1</FormatVersion>
        <FromDate>2/28/2019 00:00:00</FromDate>
        <ToDate>2/28/2019</ToDate>
    </General>
</scrapingTest>

Этот код работает для меня, чтобы проанализировать и изменить его:

var dom = WSH.CreateObject("MSXML2.DOMDocument.6.0"),
    pathToXML = WSH.Arguments(0);

dom.load(pathToXML);

var nNode = dom.selectSingleNode("//FromDate/text()"),
    today = new Date();

nNode.data = [today.getMonth(), today.getDate(), today.getFullYear()].join('/') + ' 00:00:00';
dom.save(pathToXML);
...