获取转换后的XML,然后解析某些节点的数据

时间:2013-09-24 13:40:52

标签: xml xslt asp-classic

我有一个XML文件,它通过XSL文件转换为XML格式,而我希望循环通过某个节点来提取其文本。我在转换后解析出特定文本时遇到了问题。

 tfmSheet = xml.responseXML.transformNode(sheet)

代码正常工作,直到For / Next循环。我觉得我在上面一行之后错过了一两步,但不确定是什么。

<--- previous code omitted for clarity ---> 

Set xsl = Server.CreateObject("Microsoft.XMLHTTP")
xsl.open "GET", "http://www.example.com/xsl.xsl", False
xsl.send
If xsl.status = 200 Then
Set sheet = xsl.responseXML
End If

tfmSheet = xml.responseXML.transformNode(sheet)

- Am I missing something here? -

tfmList = tfmSheet.SelectNodes("//xmldata/Orders")

For Each tfmOrder In tfmList
    Set OrderDate = tfmOrder.SelectSingleNode("OrderDate")
    If Not OrderDate Is Nothing Then
    OrderDateText = OrderDate.text
    End If

Response.write OrderDateText

Next

Response.write tfmSheet

继续提出这个问题......

Is it possible to load a XSL stylesheet from a remote server in ASP classic

UPDATED转换后的XML

<xmldata>
    <Orders>
        <OrderID>87709</OrderID>
        <CustomerID>123456</CustomerID>
        <OrderDate>6/13/2013 5:08:00 PM</OrderDate>
        <PaymentMethodID>5</PaymentMethodID>
        <PONum></PONum>
        <ShippingMethodID>502</ShippingMethodID>
        <OrderDetails>
            <OrderDetailID>25676</OrderDetailID>
            <OrderID>87709</OrderID>
            <ProductCode>58309-SYL</ProductCode>
            <ProductID>9756</ProductID>
            <ProductName>ABCD</ProductName>
            <ProductPrice>4.7500</ProductPrice>
            <Quantity>300</Quantity>
            <TotalPrice>1425.0000</TotalPrice>
        </OrderDetails>
        <OrderDetails>
            <OrderDetailID>25677</OrderDetailID>
            <OrderID>87709</OrderID>
            <ProductCode>ABCDEFG</ProductCode>
            <ProductID>9757</ProductID>
            <ProductName>XYZ 2</ProductName>
            <ProductPrice>4.7500</ProductPrice>
            <Quantity>300</Quantity>
            <TotalPrice>1425.0000</TotalPrice>
        </OrderDetails>
    </Orders>
    <Orders>
        <OrderID>84757</OrderID>
        <CustomerID>123456</CustomerID>
        <OrderDate>10/30/2012 3:02:00 PM</OrderDate>
        <PaymentMethodID>5</PaymentMethodID>
        <PONum></PONum>
        <ShippingMethodID>141</ShippingMethodID>
        <OrderDetails>
        <OrderDetailID>21472</OrderDetailID>
        <OrderID>84757</OrderID>
        <ProductCode>58309</ProductCode>
        <ProductID>9756</ProductID>
        <ProductName>XYZ 12V</ProductName>
        <ProductPrice>4.7500</ProductPrice>
        <Quantity>160</Quantity>
        <TotalPrice>760.0000</TotalPrice>
        </OrderDetails>
    </Orders>
    <Orders>
         next Order...
    </Orders>
<xmldata>

1 个答案:

答案 0 :(得分:0)

transformNode返回一个字符串,而不是DOM文档。所以改变

tfmSheet = xml.responseXML.transformNode(sheet)

tfmList = tfmSheet.SelectNodes("//xmldata/Orders")

Set tfmSheet = Server.CreateObject("Msxml2.DOMDocument")
xml.responseXML.transformNodeToObject sheet, tfmSheet
tfmList = tfmSheet.SelectNodes("//xmldata/Orders")