Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MediaArea/MediaInfoLib.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérôme Martinez <jerome@mediaarea.net>2022-10-04 11:23:49 +0300
committerJérôme Martinez <jerome@mediaarea.net>2022-10-04 11:36:01 +0300
commite1b5a0e548dd0507175629a838025ee2ca71bef5 (patch)
tree12ade1ad1e63a4d096ae4a1f54458eb73a7c3a45
parente16ea684bc1b702f7e7a87c20f9ea8d61f67ff5f (diff)
x XML output, accept "-" in element names
-rw-r--r--Source/MediaInfo/MediaInfo_Inform.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/Source/MediaInfo/MediaInfo_Inform.cpp b/Source/MediaInfo/MediaInfo_Inform.cpp
index b928d6597..6a607d69e 100644
--- a/Source/MediaInfo/MediaInfo_Inform.cpp
+++ b/Source/MediaInfo/MediaInfo_Inform.cpp
@@ -81,13 +81,14 @@ Ztring Xml_Name_Escape_0_7_78 (const Ztring &Name)
if (!(ToReturn[ToReturn_Pos]>=__T('A') && ToReturn[ToReturn_Pos]<=__T('Z'))
&& !(ToReturn[ToReturn_Pos]>=__T('a') && ToReturn[ToReturn_Pos]<=__T('z'))
&& !(ToReturn[ToReturn_Pos]>=__T('0') && ToReturn[ToReturn_Pos]<=__T('9'))
+ && !(ToReturn[ToReturn_Pos]==__T('-')) // Authorized if not first pos
&& !(ToReturn[ToReturn_Pos]==__T('_')))
ToReturn.erase(ToReturn_Pos, 1);
else
ToReturn_Pos++;
}
- if (ToReturn.operator()(0)>='0' && ToReturn.operator()(0)<='9')
+ if ((ToReturn.operator()(0)>='0' && ToReturn.operator()(0)<='9') || ToReturn.operator()(0)=='-')
ToReturn.insert(0, 1, __T('_'));
if (ToReturn.empty())
@@ -720,6 +721,10 @@ Ztring MediaInfo_Internal::Inform (stream_t StreamKind, size_t StreamPos, bool I
size_t NumbersPos=SubName.find_first_of("0123456789");
if (NumbersPos!=(size_t)-1)
SubName.resize(NumbersPos);
+ if (XML_0_7_78 || JSON)
+ SubName=Xml_Name_Escape_0_7_78(Ztring().From_UTF8(SubName)).To_UTF8();
+ else
+ SubName=Xml_Name_Escape(Ztring().From_UTF8(SubName)).To_UTF8();
bool IsArray=NumbersPos!=(size_t)-1;
Node* Node_Sub=new Node(SubName.c_str(), IsArray);
Fields_Current->push_back(Node_Sub);