@@ -45,23 +45,42 @@ void ParseFile(pcstr path, CMemoryWriter& W, IReader* F, XMLDocument* xml)
45
45
}
46
46
}
47
47
48
- void XMLDocument::Load (pcstr path_alias, pcstr path, pcstr _xml_filename )
48
+ bool XMLDocument::Load (pcstr path_alias, pcstr path, pcstr xml_filename, bool fatal )
49
49
{
50
- shared_str fn = correct_file_name (path, _xml_filename );
50
+ shared_str fn = correct_file_name (path, xml_filename );
51
51
52
52
string_path str;
53
53
xr_sprintf (str, " %s\\ %s" , path, *fn);
54
- return Load (path_alias, str);
54
+ return Load (path_alias, str, fatal );
55
55
}
56
56
57
- // инициализация и загрузка XML файла
58
- void XMLDocument::Load (pcstr path, pcstr xml_filename)
57
+ // Try to load from the first path, and if it's failed then try the second one
58
+ bool XMLDocument::Load (pcstr path_alias, pcstr path, pcstr path2, pcstr xml_filename, bool fatal /* = true */ )
59
59
{
60
- xr_strcpy (m_xml_file_name, xml_filename);
61
- // Load and parse xml file
60
+ shared_str fn = correct_file_name (path, xml_filename);
61
+
62
+ string_path str;
63
+ xr_sprintf (str, " %s\\ %s" , path, *fn);
64
+ if (Load (path_alias, str, false ))
65
+ return true ;
62
66
67
+ xr_sprintf (str, " %s\\ %s" , path2, *fn);
68
+ return Load (path_alias, str, fatal);
69
+ }
70
+
71
+ // Load and parse xml file
72
+ bool XMLDocument::Load (pcstr path, pcstr xml_filename, bool fatal)
73
+ {
63
74
IReader* F = FS.r_open (path, xml_filename);
64
- R_ASSERT2 (F, xml_filename);
75
+ if (!F)
76
+ {
77
+ if (fatal)
78
+ R_ASSERT3 (F, " Can't find specified xml file" , xml_filename);
79
+ else
80
+ return false ;
81
+ }
82
+
83
+ xr_strcpy (m_xml_file_name, xml_filename);
65
84
66
85
CMemoryWriter W;
67
86
ParseFile (path, W, F, this );
@@ -79,6 +98,8 @@ void XMLDocument::Load(pcstr path, pcstr xml_filename)
79
98
}
80
99
81
100
m_root = m_Doc.firstChildElement ();
101
+
102
+ return true ;
82
103
}
83
104
84
105
XML_NODE XMLDocument::NavigateToNode (XML_NODE start_node, pcstr path, const size_t node_index) const
0 commit comments