Implement CDATA reader, fix bugs in Writer::insertBinFile
This commit is contained in:
@@ -257,13 +257,18 @@ void PropertyFileIncluded::setPyObject(PyObject *value)
|
||||
void PropertyFileIncluded::Save (Base::Writer &writer) const
|
||||
{
|
||||
if (writer.isForceXML()) {
|
||||
writer.Stream() << writer.ind() << "<FileIncluded file=\"\">" << endl;
|
||||
|
||||
// write the file in the XML stream
|
||||
if (!_cValue.empty())
|
||||
if (!_cValue.empty()) {
|
||||
Base::FileInfo file(_cValue.c_str());
|
||||
writer.Stream() << writer.ind() << "<FileIncluded data=\"" <<
|
||||
file.fileName() << "\">" << std::endl;
|
||||
// write the file in the XML stream
|
||||
writer.incInd();
|
||||
writer.insertBinFile(_cValue.c_str());
|
||||
|
||||
writer.Stream() << writer.ind() <<"</FileIncluded>" << endl ;
|
||||
writer.decInd();
|
||||
writer.Stream() << writer.ind() <<"</FileIncluded>" << endl;
|
||||
}
|
||||
else
|
||||
writer.Stream() << writer.ind() << "<FileIncluded data=\"\"/>" << std::endl;
|
||||
}
|
||||
else {
|
||||
// instead initiate an extra file
|
||||
@@ -280,17 +285,30 @@ void PropertyFileIncluded::Save (Base::Writer &writer) const
|
||||
void PropertyFileIncluded::Restore(Base::XMLReader &reader)
|
||||
{
|
||||
reader.readElement("FileIncluded");
|
||||
string file (reader.getAttribute("file") );
|
||||
|
||||
if (!file.empty()) {
|
||||
// initate a file read
|
||||
reader.addFile(file.c_str(),this);
|
||||
|
||||
// is in the document transient path
|
||||
aboutToSetValue();
|
||||
_cValue = getDocTransientPath() + "/" + file;
|
||||
_BaseFileName = file;
|
||||
hasSetValue();
|
||||
if (reader.hasAttribute("file")) {
|
||||
string file (reader.getAttribute("file") );
|
||||
if (!file.empty()) {
|
||||
// initate a file read
|
||||
reader.addFile(file.c_str(),this);
|
||||
// is in the document transient path
|
||||
aboutToSetValue();
|
||||
_cValue = getDocTransientPath() + "/" + file;
|
||||
_BaseFileName = file;
|
||||
hasSetValue();
|
||||
}
|
||||
}
|
||||
// section is XML stream
|
||||
else if (reader.hasAttribute("data")) {
|
||||
string file (reader.getAttribute("data") );
|
||||
if (!file.empty()) {
|
||||
// is in the document transient path
|
||||
aboutToSetValue();
|
||||
_cValue = getDocTransientPath() + "/" + file;
|
||||
reader.readBinFile(_cValue.c_str());
|
||||
reader.readEndElement("FileIncluded");
|
||||
_BaseFileName = file;
|
||||
hasSetValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user