Skip to content

Commit bd43820

Browse files
committed
improving xerces error message fix #7264
1 parent e216b34 commit bd43820

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

src/utils/xml/GenericSAXHandler.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,24 @@ GenericSAXHandler::convertTag(const std::string& tag) const {
204204
std::string
205205
GenericSAXHandler::buildErrorMessage(const XERCES_CPP_NAMESPACE::SAXParseException& exception) {
206206
std::ostringstream buf;
207-
char* pMsg = XERCES_CPP_NAMESPACE::XMLString::transcode(exception.getMessage());
208-
buf << pMsg << std::endl;
209-
buf << TL(" In file '") << getFileName() << "'" << std::endl;
207+
const XMLCh* const sysId = exception.getSystemId();
208+
if (sysId != nullptr) {
209+
const std::string url = StringUtils::transcode(sysId);
210+
if (StringUtils::startsWith(url, "http:") || StringUtils::startsWith(url, "https:")) {
211+
buf << "Failed to read " << url << ".\n";
212+
}
213+
}
214+
if (StringUtils::transcode(exception.getMessage()).find("NetAccessor") != std::string::npos) {
215+
buf << "No network access.\n";
216+
}
217+
if (buf.tellp() == 0) {
218+
char* pMsg = XERCES_CPP_NAMESPACE::XMLString::transcode(exception.getMessage());
219+
buf << pMsg << "\n";
220+
XERCES_CPP_NAMESPACE::XMLString::release(&pMsg);
221+
}
222+
buf << TL(" In file '") << getFileName() << "'\n";
210223
buf << TL(" At line/column ") << exception.getLineNumber() + 1
211-
<< '/' << exception.getColumnNumber() << "." << std::endl;
212-
XERCES_CPP_NAMESPACE::XMLString::release(&pMsg);
224+
<< '/' << exception.getColumnNumber() << ".\n";
213225
return buf.str();
214226
}
215227

src/utils/xml/GenericSAXHandler.h

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,6 @@ class GenericSAXHandler : public XERCES_CPP_NAMESPACE::DefaultHandler {
198198
void fatalError(const XERCES_CPP_NAMESPACE::SAXParseException& exception);
199199
//@}
200200

201-
202201
void setSection(const int element, const bool seen) {
203202
mySection = element;
204203
mySectionSeen = seen;
@@ -224,7 +223,6 @@ class GenericSAXHandler : public XERCES_CPP_NAMESPACE::DefaultHandler {
224223
// Reader needs access to myStartElement, myEndElement
225224
friend class SUMOSAXReader;
226225

227-
228226
protected:
229227
/**
230228
* @brief Builds an error message
@@ -237,7 +235,6 @@ class GenericSAXHandler : public XERCES_CPP_NAMESPACE::DefaultHandler {
237235
*/
238236
std::string buildErrorMessage(const XERCES_CPP_NAMESPACE::SAXParseException& exception);
239237

240-
241238
/**
242239
* @brief Callback method for an opening tag to implement by derived classes
243240
*
@@ -249,7 +246,6 @@ class GenericSAXHandler : public XERCES_CPP_NAMESPACE::DefaultHandler {
249246
virtual void myStartElement(int element,
250247
const SUMOSAXAttributes& attrs);
251248

252-
253249
/**
254250
* @brief Callback method for characters to implement by derived classes
255251
*
@@ -261,7 +257,6 @@ class GenericSAXHandler : public XERCES_CPP_NAMESPACE::DefaultHandler {
261257
virtual void myCharacters(int element,
262258
const std::string& chars);
263259

264-
265260
/** @brief Callback method for a closing tag to implement by derived classes
266261
*
267262
* Called by "endElement" (see there).
@@ -283,7 +278,6 @@ class GenericSAXHandler : public XERCES_CPP_NAMESPACE::DefaultHandler {
283278
*/
284279
XMLCh* convert(const std::string& name) const;
285280

286-
287281
/**
288282
* @brief Converts a tag from its string into its numerical representation
289283
*
@@ -294,7 +288,6 @@ class GenericSAXHandler : public XERCES_CPP_NAMESPACE::DefaultHandler {
294288
*/
295289
int convertTag(const std::string& tag) const;
296290

297-
298291
private:
299292
/// @name attributes parsing
300293
//@{
@@ -355,6 +348,7 @@ class GenericSAXHandler : public XERCES_CPP_NAMESPACE::DefaultHandler {
355348

356349
std::pair<int, SUMOSAXAttributes*> myNextSectionStart;
357350

351+
358352
private:
359353
/// @brief invalidated copy constructor
360354
GenericSAXHandler(const GenericSAXHandler& s);

0 commit comments

Comments
 (0)