![]() |
Read nodes from an XML file
I have an XML file like:
I need to read all the paths Any idea how I can do this in VBP? I looked at the sample XML.bld but there is a different parsing ,for attributes,I did not succed to pars it the way I need... Thanks for any help |
1 Attachment(s)
Using an XSL transform would be one way (see attached sample).
|
Thanks a lot,it works perfectly!
I just noticed sometimes the paths are not unique as the same file was modified in multiple revisions.Is it possible to change the XSL file in order to produce unique paths (every path should appear only once)?(I do not have any experience with XSL) Or I should parse separately the output text fle in order to create another text file with unique paths? |
In the 'Create XSL file' step, replace
with |
Tried that but the step fails:
8/24/2007 11:19:59 AM: Building project step 'Generate text file(containing paths)'... Loading XML input document... Loading XSLT stylesheet... Initializing XSLT processor... Expression expected. //path[-->[<--not(.=preceding::path)]] 8/24/2007 11:19:59 AM: Step 'Generate text file(containing paths)' failed 8/24/2007 11:19:59 AM: Build ended. XSL file looks now like this: |
Please ZIP and send or post:
1) The info from Help | About | Install Info 2) The version(s) of MSXML installed (listed in Add/Remove Programs) |
1)
Visual Build Professional 6.3 Registered to: xxxxxxxxxx (1-computer license) Windows Version: 5.1.2600.2.0 Install path: D:\Program Files\VisBuildPro6 SftTree_IX86_U_50.dll version 5.05 unins000.exe version 51.46.0.0 VisBuildCmd.exe version 6.3.0.0 VisBuildPro.exe version 6.3.0.0 VisBuildBld.dll version 6.3.0.0 VisBuildBurn.dll version 6.3.0.0 VisBuildCore.dll version 6.3.0.0 VisBuildDotNET.dll version 6.3.0.0 VisBuildExt.dll version 6.3.0.0 VisBuildLog.dll version 6.3.0.0 VisBuildMisc.dll version 6.3.0.1 VisBuildMS.dll version 6.3.0.0 VisBuildMS2.dll version 6.3.0.0 VisBuildNet.dll version 6.3.0.0 VisBuildSvr.dll version 6.3.0.0 VisBuildSvr.Interop.dll version 1.0.0.0 VisBuildVCS.dll version 6.3.0.0 2)It appears MSXML 4.0 SP2 and also MSXML 6.0 parser |
If you're putting the expression in the XSLT file itself (rather than the Create XSL File step as suggested), use single brackets instead of double:
|
Thanks,with single brackets works ok:
|
Well,another issue appeared :-(
I need to read line by line the text file produced by transformation. I use a set macro step in order set a macro CURRENT_LINE to value [vbld_TempMacroObj("FILE").ReadLine()] However -the macro remains empty. I tried even to set a macro FILE_CONTENT to value: [vbld_GetFileContents("%CHANGED_FILES_TXT%")] but the resulting value is always : ÿþ/ I do not understand what is the issue... |
Ok,I finally got it,text file is encoded in Unicode so it should be read like this:
[vbld_EscapeString(vbld_FSO.OpenTextFile("%CHANGED_FILES_TXT%", , , True).ReadAll)] |
1 Attachment(s)
You originally indicated you wanted to put the values into a text file. To instead iterate over the matches within VBP, just use that XPath expression in an MSXML query (see attached sample).
|
I see,thanks a lot for sample!
|
In the last sample (transform3.bld)-how can I write in log-step "Do stuff with node value"- >for every path the related revision (written in
Basically one logentry has one revision and multiple paths. |
1 Attachment(s)
Attached.
|
All times are GMT -5. The time now is 02:41 AM. |
Copyright © 1999-2023 Kinook Software, Inc.