12#include <libxml/parser.h>
16#include <rtl/strbuf.hxx>
23 std::string_view rText, std::string_view rUnEscaped, std::string_view rEscaped )
25 assert( rEscaped.size() == 2*rUnEscaped.size() );
26 OStringBuffer sReturn;
29 size_t nUnEscapedOne = rUnEscaped.find(rText[
nIndex]);
30 if( nUnEscapedOne != std::string_view::npos )
32 sReturn.append(rEscaped.substr(nUnEscapedOne*2,2));
35 sReturn.append(rText[
nIndex]);
37 return sReturn.makeStringAndClear();
42 std::string_view rText, std::string_view rEscaped, std::string_view rUnEscaped)
44 assert( rEscaped.size() == 2*rUnEscaped.length() );
45 OStringBuffer sReturn;
46 const size_t nLength = rText.size();
51 size_t nEscapedOne = rEscaped.find(rText.substr(
nIndex,2));
52 if( nEscapedOne != std::string_view::npos )
54 sReturn.append(rUnEscaped[nEscapedOne/2]);
59 sReturn.append(rText[
nIndex]);
63 sReturn.append(rText[
nIndex]);
65 return sReturn.makeStringAndClear();
71 OStringBuffer sReturn;
72 for (
size_t i = 0;
i < rString.size(); ++
i)
77 sReturn.append(
"<");
80 sReturn.append(
">");
83 sReturn.append(
""");
86 sReturn.append(
"'");
92 sReturn.append(
"&");
95 sReturn.append(rString[
i]);
99 return sReturn.makeStringAndClear();
104 OStringBuffer sReturn;
105 for (
size_t i = 0;
i != rString.size();) {
106 auto tmp = rString.substr(
i);
109 i += RTL_CONSTASCII_LENGTH(
"&");
112 i += RTL_CONSTASCII_LENGTH(
"<");
115 i += RTL_CONSTASCII_LENGTH(
">");
118 i += RTL_CONSTASCII_LENGTH(
""");
120 sReturn.append(
'\'');
121 i += RTL_CONSTASCII_LENGTH(
"'");
123 sReturn.append(rString[
i]);
127 return sReturn.makeStringAndClear();
135 OString content = OString::Concat(
"<root>") +
text +
"</root>";
136 doc = xmlParseMemory(content.getStr(),
static_cast<int>(content.getLength()));
137 if (doc ==
nullptr) {
148 xmlChar* pTemp = xmlStrdup( pString );
149 OString sResult =
reinterpret_cast<char*
>( pTemp );
bool isWellFormedXML(std::string_view text)
Check whether text is a valid XML expression.
OString QuotHTML(std::string_view rString)
Convert special characters to XML entity references.
OString xmlStrToOString(const xmlChar *pString)
Convert xmlChar* to OString.
OString UnQuotHTML(std::string_view rString)
Convert XML entity references to single characters.
OString escapeAll(std::string_view rText, std::string_view rUnEscaped, std::string_view rEscaped)
Escape all given character in the text.
OString unEscapeAll(std::string_view rText, std::string_view rEscaped, std::string_view rUnEscaped)
Unescape all given character in the text.
constexpr bool starts_with(std::basic_string_view< charT, traits > sv, std::basic_string_view< charT, traits > x) noexcept