2012-01-09 1 views
0

Каков наилучший способ чтения XML-Xpath с asp-classic из String Request Param.Как работать с XML/XPath с asp-classic и parse String to xml Документ

<% function FReadXml(pStringXml) 
    { 
     var xDom = new ActiveXObject("MSXML2.DOMDocument"); 
     var a = xDom.LoadXML(pStringXml) 
     return a; 
    } 
var xml = Request.QueryString("xml").item; 
try{ 
    var dom = FReadXml(xml); 
    //work with xpath 
}catch(ex0){ 
    Response.Write("problems when read a xml: " + ex0.message); 
} 

%>

Спасибо, очень много.

+0

вопрос немного слишком общий характер. Предоставьте короткий пример XML, который вам нужен, «разобрать» и указать, какие данные вы хотели бы извлечь из него. – AnthonyWJones

+0

Мой вопрос: как загрузить документ из строкового параметра, а не из параметра имени файла! Благодарю. – jrey

+0

Вы, кажется, делаете это, и уже «LoadXML» - это метод, который использует загрузку строки, содержащей XML, в dom. – AnthonyWJones

ответ

1

я не знаю, что вы хотите сказать, с разбора строки в XML-документа, но я могу помочь вам с частью использования Xpath

вы можете загрузить один узел с помощью XPath с SelectSingleNode({XPath Expression})

var xmlDoc = Server.CreateObject("Msxml2.DOMDocument.6.0"); 
var currNode; 
xmlDoc.async = false; 
xmlDoc.load("books.xml"); 
if (xmlDoc.parseError.errorCode != 0) { 
    var myErr = xmlDoc.parseError; 
    Response.write("You have error " + myErr.reason); 
} else { 
    xmlDoc.setProperty("SelectionLanguage", "XPath"); 
    currNode = xmlDoc.selectSingleNode("//book/author"); 
    Response.write(currNode.text); 
} 

или с помощью SelectNodes({XPath Expression})

var xmlDoc = Server.CreateObject("Msxml2.DOMDocument.3.0"); 
var objNodeList; 
xmlDoc.async = false; 
xmlDoc.load("hello.xsl"); 
if (xmlDoc.parseError.errorCode != 0) { 
    var myErr = xmlDoc.parseError; 
    Response.write("You have error " + myErr.reason); 
} else { 
    xmlDoc.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'"); 
    xmlDoc.setProperty("SelectionLanguage", "XPath"); 
    objNodeList = xmlDoc.documentElement.selectNodes("//xsl:template"); 
    Response.write(objNodeList.length); 
} 

вы можете видеть эту тему тоже:

StackOverflow - How can I get the XML nodes from this XML in classic ASP (MSXML)?

Edit: ссылаюсь на то, как разобрать строку XML в DOM-документ MSXML есть способ, как вы обозначаться в комментариях boolValue = oXMLDOMDocument.loadXML(bstrXML); это простой способ создать свой собственный строку XML и манипулировать

Пример:

var xmlDoc = Server.CreateObject("Msxml2.DOMDocument.3.0"); 
xmlDoc.async = false; 
xmlDoc.loadXML("<customer><first_name>Joe</first_name><last_name>Smith</last_name></customer>"); 
if (xmlDoc.parseError.errorCode != 0) { 
    var myErr = xmlDoc.parseError; 
    Response.Write("You have error " + myErr.reason); 
} else { 
    Response.Write(xmlDoc.xml); 
} 
+0

мой вопрос действительно заключался в том, как загружать из строки, а не из файла, я мог бы запускать и отправлять мне .. и pStringXML = ". .. "var a = xmlDoc.loadXML (pStringXml) – jrey

+0

Я имею в виду строку для документа, когда я не хочу загружаться из имени файла из строки, но может быть параметром запроса в моем случае. – jrey

+0

спасибо за решение (y) – jrey