fix raw-xml formatting (remove XML declaration) v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Tue, 23 Nov 2021 20:37:52 +0100
branchv_0
changeset 10 0afd34a2b424
parent 9 52638b548a59
child 11 8a590a73db8a
fix raw-xml formatting (remove XML declaration)
src/XMLTableCommand.h
--- a/src/XMLTableCommand.h	Sat Feb 20 19:14:54 2021 +0100
+++ b/src/XMLTableCommand.h	Tue Nov 23 20:37:52 2021 +0100
@@ -43,7 +43,10 @@
 	std::wstring_convert<codecvt_utf8<wchar_t>> convertor; // TODO: support also other encodings.
 
 	string_t formatRawXML(string_t rawXML) {
-		std::wregex pattern(L"^<\\?xml version=\"1.0\" encoding=\"UTF-8\"\\?>\n|\n$");
+		std::wregex pattern(L"^(<\\?xml version=\"1.0\" encoding=\"UTF-8\"\\?>\\s*)+|\n$");
+		// libxml sometimes returns doubled XML declaration (probably a bug), see:
+		// --relation ini --records '/' --attribute 'xml' string '.' --mode raw-xml # (but not for --records '//*')
+		// so we remove all of them and also trailing line ends (if any).
 		return std::regex_replace(rawXML, pattern, L"");
 	}