Geeting error while reading the xml file.
Hi , I am getting the error while reading the xml file. The error message is.."duplicate key". I have attached read and write function and screenshot of xml file. thank you.
xml data:
<?xml version="1.0"?>
-<opencv_storage>
-<features>
<SuperPixelno>0</SuperPixelno>
<lValue>2.9496402877697842e-01</lValue>
<aValue>1.2799040767386091e+02</aValue>
<bValue>1.2798081534772182e+02</bValue>
<xCenter>1.1899280575539569e+01</xCenter>
<yCenter>1.5884892086330936e+01</yCenter>
<depthValue>-1.</depthValue>
</features>
-<features>
<SuperPixelno>1</SuperPixelno>
<lValue>1.6258596973865200e+00</lValue>
<aValue>1.2793397524071527e+02</aValue>
<bValue>1.2792159559834938e+02</bValue>
<xCenter>9.6396148555708390e+00</xCenter>
<yCenter>5.1880330123796426e+01</yCenter>
<depthValue>-1.</depthValue>
</features>
...........................so on.....................
link text ...........................................................................................................................................
int main()
{
std::vector<std::string> names = { "SuperPixelno", "lValue", "aValue","bValue","xCenter","yCenter","depthValue" };
cv::FileStorage fs("FeatureVector.xml", cv::FileStorage::WRITE);
superpixelSlic.writeVector(fs, names, tempCenters);
fs.release();
vector<CenterValues> readTempCenters;
std::vector<std::string> nm = { "SuperPixelno", "lValue", "aValue","bValue","xCenter","yCenter","depthValue" };
FileStorage fs2("FeatureVector.xml", FileStorage::READ);
readVector(fs2, nm, readTempCenters);
fs2.release();
return (0);
}
void readVector(FileStorage &fns, vector<std::string> nm, vector<CenterValues> &data)
{
data.clear();
CenterValues tmp;
FileNode fn = fns["features"];
if (fn.empty()) {
return;
}
for (FileNodeIterator current = fn.begin(); current != fn.end(); ++current)
{
//FileNode item = *current;
cout << "superpixelno. " << (double)(*current)[nm[0]];
cout << "light Value " << (double)(*current)[nm[1]];
cout << "a value" << (double)(*current)[nm[2]];
cout << "b value" << (double)(*current)[nm[3]];
cout << "x Value" << (double)(*current)[nm[4]];
cout << "y Value" << (double)(*current)[nm[5]];
cout << "depth Value" << (double)(*current)[nm[6]];
}
}
void SuperpixelSlic:: writeVector(cv::FileStorage &fs, std::vector<std::string> &names, std::vector<CenterValues> &data)
{
for (int i = 0; i < data.size(); i++)![image description](/upfiles/1518773204719258.png)
{
fs << "features";
fs <<"{:"<< names[0] << i<<names[1] << data[i].lightValue <<names[2] << data[i].aValue<<names[3] << data[i].bValue << names[4] << data[i].xValue<<names[5] << data[i].yValue<<names[6] << data[i].depthValue<<"}";
}
}
please be so kind, and replace the xml screenshot with a text version, thank you !
Hi berak, I tried to post data but only integers are present. Can you please tell me that how to attach text file here? thank you.
copy/paste it into your question, mark it with the mouse, hit the "10101" button to format it.
"duplicate key" = <features> xml browser cannot make a difference between first feature and second and...
Hi Berak, I have added the dropbox link to access the xml file. thnak you.
nice try, but that file is broken (invalid xml).
next attempt , please, and put it HERE, not on dropbox.
Hi Break..done :(