in Tools/UIRecorder/UIXPathLib/UiTreeWalk.cpp [41:91]
bool XmlEncode(std::wstring& data, int nMaxCount)
{
if ((int)data.size() > nMaxCount)
{
data = data.substr(0, nMaxCount);
}
size_t nCount = 0;
std::wstring buffer;
buffer.reserve(data.size());
for (size_t pos = 0; pos != data.size(); ++pos)
{
if (data[pos] == L'\n' || data[pos] == L'\r')
{
nCount = pos;
break;
}
else if (data[pos] == L'&')
{
buffer.append(L"&");
}
else if (data[pos] == L'\"')
{
buffer.append(L""");
}
else if (data[pos] == L'\'')
{
buffer.append(L"'");
}
else if (data[pos] == L'<')
{
buffer.append(L"<");
}
else if (data[pos] == L'>')
{
buffer.append(L">");
}
else if (data[pos] == L'\\')
{
buffer.append(L"\\\\");
}
else
{
buffer.append(&data[pos], 1);
}
}
data.swap(buffer);
return nCount > 0;
}