diff options
author | Jérôme Martinez <jerome@mediaarea.net> | 2022-10-04 11:23:49 +0300 |
---|---|---|
committer | Jérôme Martinez <jerome@mediaarea.net> | 2022-10-04 11:36:01 +0300 |
commit | e1b5a0e548dd0507175629a838025ee2ca71bef5 (patch) | |
tree | 12ade1ad1e63a4d096ae4a1f54458eb73a7c3a45 | |
parent | e16ea684bc1b702f7e7a87c20f9ea8d61f67ff5f (diff) |
x XML output, accept "-" in element names
-rw-r--r-- | Source/MediaInfo/MediaInfo_Inform.cpp | 7 |
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);
|