2013-08-02 4 views
1

루프 내에서 If 문을 사용하는 대신 New = "True"속성을 사용하여 요소 만 루프하고 싶습니다. 어떻게 가능합니까?ASP의 특정 속성을 가진 XML 요소 만 루프하십시오.

ASP (나는이 더 나은 성능을 줄 것이라고 희망하고있다) :

<% 
Set objXMLDoc = Server.CreateObject("MSXML2.DOMDocument.3.0")  
objXMLDoc.async = False  
objXMLDoc.load Server.MapPath("/data.xml") 
Dim xmlProduct  
For Each xmlProduct In objXMLDoc.documentElement.selectNodes("Product") 
    Dim productCode : productCode = xmlProduct.selectSingleNode("ProductCode").text 
    Dim productName : productName = xmlProduct.selectSingleNode("ProductName").text 
    Response.Write Server.HTMLEncode(productCode) & " - " 
    Response.Write Server.HTMLEncode(productName) & "<br>" 
Next 
%> 

XML :

<Products> 
    <Product New="True"> 
    <ProductCode>1234</ProductCode> 
    <ProductName>Bike</ProductName> 
    </Product> 
    <Product New="False"> 
    <ProductCode>1235</ProductCode> 
    <ProductName>Car</ProductName> 
    </Product> 
    <Product New="True"> 
    <ProductCode>1236</ProductCode> 
    <ProductName>Plane</ProductName> 
    </Product> 
</Products> 

답변

2

당신은 쿼리 및 XPATH 사용하여 XML 문서를 필터링 할 수 있습니다

Dim xpath : xpath = "/*/Product[@New='True']" 

Dim xml 
Set xml = CreateObject("Msxml2.DOMDocument") 
    xml.async = False 
    xml.loadXML([YOUR XML STRING]) 

    Dim root, xmlNodes, x 
    Set root = xml.documentElement 
     set xmlNodes = xml.selectNodes(xpath) 
      If xmlNodes.length > 0 then 
       For each x in xmlNodes 
        response.write(x.text) 
       Next 
      Else 
       response.write("not found.") 
      End if 
     set xmlNodes = nothing 
    Set root = Nothing 

Set xml = Nothing 

XML 구조에서이 xpath를 테스트했는데 제대로 작동하는 것 같습니다. xpath 구문에 대한 자세한 내용은 here입니다.

HTH, Erik

+0

물론! 감사! – NinjaFart

관련 문제