09-13-2023 05:59 AM
Hello,
I try to read XML file, and change the node value and the write out as new xml file.
I successfully did change node value.
However, unnecessary parts <LVData>, <Version> and its pairs </brabra> is added as header and footer. This parts annoy me in post process with other application.
Is there any way to avoid added these unneeded parts when write out as new XML file.
It would be appriciated if you help.
LabVIEW version is 19.
I
Solved! Go to Solution.
09-13-2023 06:11 AM
21 is to new for me...
If you use the LabVIEW From\To XML functions, you're stuck with those...
You can get the XML string (I think) and remove it from the string.
Or, build your own XML string entirely.
Or use the XML library to either build the XML or get the child and it's XML.
If you're going to use XML, I'd not even consider the to\from xml functions and go straight to either LV's XML library or a .NET xml library.
If you have a say in it, most people prefer JSON...
09-13-2023 06:23 AM - edited 09-13-2023 06:25 AM
Hi,
Since you are using the VI "Write to XML File", if you open its diagram you can see this:
So it is easy to see that the header and footer are always written and there is no configuration that can change that.
What you can do is copy this code and create your own "Write to XML" subVI that writes exactly how you want.
Also, what is the purpose of your whole VI ? It seems highly complicated just to modify an XML file. Since you are using the XML parser API, why not use it to modify the nodes and write to file ? (instead of recreating the whole XML string from scratch and then using "Write to XML File" VI).
Regards,
Raphaël.
09-13-2023 06:45 AM
@kzn4605 wrote:
Hello,
I try to read XML file, and change the node value and the write out as new xml file.
I successfully did change node value.
However, unnecessary parts <LVData>, <Version> and its pairs </brabra> is added as header and footer. This parts annoy me in post process with other application.
Is there any way to avoid added these unneeded parts when write out as new XML file.
It would be appriciated if you help.
LabVIEW version is 19.
I
When XML was first introduced to LabVIEW the XML file functions used a LabVIEW specific Schema that actually changed. That Schema was, and still isn't an exact cross application XML format although, The XML specification permits customized Schemas. But, other applications may not find the LabVIEW Schema Definition file.
LabVIEW also has implemented a XML API that does follow a more transferable method. Those functions do use DOMuserdefref32.dll published by the World Wide Web Consortium (W3C) the disadvantage with that API is W3C has NOT published a version of DOMuserdefref32.dll that is threadsafe so it is about 50x slower than the LabVIEW only API implementatiom
09-13-2023 08:21 PM
Hi, Raphaël
Thank you for reply.
As your suggestion, I copied VI and changed it as shown below. I achieved what I wanna.
The purpose of my VI is to change the value, change algorithm is judged by python node return(T or F).
however the number of object is random, It depends on file.(in this case, number of object is 3)
So I calculate the number of object each time at first, then create the array, its array size is number of object.
As you question, I would like to use XML parser API, however, for the above reasons and to the best of my knowledge,
I created VI in this way as you can see.
Regards,
kzn
09-14-2023 07:03 AM
If you have to read and write XML files with an arbitrary structure (not necessarily generated by LabVIEW initially, I recommend using the XML Parser API entirely, with the very useful function "Get All Matched Nodes" that makes use of XPaths to easily retrieve the nodes you are interested in. Then you can simply read or write their text content.
Attached is your example simplified with this technique.
Regards,
Raphaël.