我有一个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>
答案 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")