opensubscriber
   Find in this group all groups
 
Unknown more information…

n : nant-users@lists.sourceforge.net 20 April 2012 • 11:18PM -0400

Re: [NAnt-users] xmlpeek and multiple nodes
by Chris Fouts

REPLY TO AUTHOR
 
REPLY TO GROUP




Ok, here's my workaround to parse this xml file, and it works! Essentially I just increment the node index and make a recursive target call.

<tests>
   <!--
      testRunStatus = run this test?: yes, no, or skip
   -->
   <test>
      <name>Lesson1234</name>
      <testRunStatus>skip</testRunStatus>
   </test>
   <test>
      <name>Lesson4567</name>
      <testRunStatus>yes</testRunStatus>
   </test>
   <test>
      <name>Lesson5678</name>
      <testRunStatus>no</testRunStatus>
   </test>
   <!-- This has to be the last node! -->
   <test>
      <name>*</name>
      <testRunStatus>no</testRunStatus>
   </test>
</tests>

   <!-Initial xml idx value is 0 -->
   <property name="xmlidx" value="0" />
   <target name="selectTestToRun">
      <xmlpeek file="C:\Sompath\teststoRun.xml" xpath="/tests/test/name" nodeindex="${xmlidx}" property="name" />
      <if test="${name != '*'}">
         <echo>name is ${name} </echo>
        <xmlpeek file="C:\Somepath\teststoRun.xml" xpath="/tests/test/testRunStatus" nodeindex="${xmlidx}" property="testRunStatus" />
         <echo>testRunStatus is ${testRunStatus} </echo>
         <if test="${testRunStatus == 'yes'}">
            <!-RUN THE TEST -->
         </if>
         <!-increment xml index -->
         <property name="xmlidx" value="${int::parse(xmlidx)+1}" />
        <!-Recursive call -->
         <call target="selectTestToRun" />
      </if>
   </target

From: Bob Archer [mailto:Bob.Archer@amsi...]
Sent: Friday, April 20, 2012 11:05 AM
To: Chris Fouts; nant-users@list...
Subject: RE: xmlpeek and multiple nodes

Not really, no.

From: Chris Fouts [mailto:Chris.Fouts@caem...]
Sent: Friday, April 20, 2012 10:03 AM
To: nant-users@list...
Subject: Re: [NAnt-users] xmlpeek and multiple nodes

So no canned support for this?

-chris

From: Bob Archer [mailto:Bob.Archer@amsi...]
Sent: Friday, April 20, 2012 9:59 AM
To: Chris Fouts; nant-users@list...
Subject: RE: xmlpeek and multiple nodes

In other words, if you can't get to a specific node with an XPath expression you really need to roll your own. That's really what it is designed for.

You could do something like what you are doing, however, you probably still need your own script task to get the count of matching nodes. A quick google find this http://bgeek.net/2005/09/19/nant-xml-node-counting/

BOb


From: Chris Fouts [mailto:Chris.Fouts@caem...]
Sent: Friday, April 20, 2012 9:48 AM
To: Bob Archer; nant-users@list...
Subject: RE: xmlpeek and multiple nodes

That's all I want to do, find a node and update it.

From: Bob Archer [mailto:Bob.Archer@amsi...]
Sent: Friday, April 20, 2012 9:36 AM
To: Chris Fouts; nant-users@list...
Subject: RE: xmlpeek and multiple nodes

For more than a simple find a node and update it I would recommend you write you own code using the script task. Or write your own task.

BOb


From: Chris Fouts [mailto:Chris.Fouts@caem...]
Sent: Friday, April 20, 2012 9:02 AM
To: nant-users@list...
Subject: [NAnt-users] xmlpeek and multiple nodes

How can I use xmlpeek/xmlpoke to recursively peruse all the similarly named nodes in a file, the the <test> node below.

<tests>
   <test>...</test>
   <test>...</test>
   <test>...</test>
</tests>

This didn't help, http://nant.sourceforge.net/release/0.85/help/tasks/xmlpeek.html

And I found this
http://old.nabble.com/xmlpeek---Multiple-nodes-found-with-the-XPath-expression-td20017190.html

Per that page, do I really have to do this, that is hard code the indices? So if I add a 16th node, I'll have to change the script to add a 16th index?
<foreach item="String" in="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15" delim="," property="index">
   <xmlpeek file="${somefile} nodeindex="${index}" ..../>
</foreach>

So I found this http://www.mail-archive.com/nant-users@list.../msg11179.html
But my nant version 0.91 complains about <xmllist> being an unknown task or data type.

-chris

***This e-mail message is intended only for the above named recipient(s)
and may contain information that is sensitive or proprietary. If you have
received this message in error or are not the named recipient(s), please
immediately notify the sender, delete this e-mail message without making
a copy and do not disclose or relay this e-mail message to anyone.***

Bookmark with:

Delicious   Digg   reddit   Facebook   StumbleUpon

Related Messages

opensubscriber is not affiliated with the authors of this message nor responsible for its content.