关于tinyxml2 插入字符串的疑问

gong87034234 2018-02-11 11:20:20
关于tinyxml2
有这样一个格式
<data name="xxx">
Hello
</data>
这样我通过 NewText 的节点就可以直接插入 Hello

但是像下面这种格式
<data name="xxx">
<Hello><TinyXml>Hello TinyXml ....
</data>

当把 <Hello><TinyXml>Hello TinyXml .... 作为字符串输入时 其中的 '<' '>' 则 会被转义成 ‘<’; ‘>’
怎么做才能做到让他不自动转
...全文
1181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bravery36 2018-02-12
  • 打赏
  • 举报
回复
你要理解转义的用途, 只有转义之后, <和>才能正常读出来, 如果不转义, <>就是一个新的节点.
赵4老师 2018-02-11
  • 打赏
  • 举报
回复
你想实现XML注入攻击?
赵4老师 2018-02-11
  • 打赏
  • 举报
回复
仅供参考:
//+------------------------------------------------------------------------- 
// 
//  Method:     CSpecialCharHashTable::CSpecialCharHashTable 
// 
//  Synopsis:   Constructor 
// 
//-------------------------------------------------------------------------- 
 
CSpecialCharHashTable::CSpecialCharHashTable() 
{ 
    for (unsigned i=0; i<SPECIAL_CHAR_HASH_TABLE_SIZE; i++) 
        _aHashTable[i] = 0; 
 
    // 
    // Initialize the table with various Ascii string->Unicode mappings 
    // 
 
    // 
    // For lt and gt, use Unicode chars from private use area to avoid 
    // collision with '<' and '>' chars in Html tags. These will be 
    // mapped back to '<' and '>' by the scanner. 
    // 
    Add(L"lt",      PRIVATE_USE_MAPPING_FOR_LT); 
    Add(L"gt",      PRIVATE_USE_MAPPING_FOR_GT); 
 
    Add(L"amp",     0x26); 
    Add(L"quot",    0x22); 
    Add(L"nbsp",    0xa0); 
    Add(L"shy",     0xad); 
    Add(L"Agrave",  0xc0); 
    Add(L"agrave",  0xe0); 
    Add(L"Aacute",  0xc1); 
    Add(L"aacute",  0xe1); 
    Add(L"Acirc",   0xc2); 
    Add(L"acirc",   0xe2); 
    Add(L"Atilde",  0xc3); 
    Add(L"atilde",  0xe3); 
    Add(L"Auml",    0xc4); 
    Add(L"auml",    0xe4); 
    Add(L"Aring",   0xc5); 
    Add(L"aring",   0xe5); 
    Add(L"AElig",   0xc6); 
    Add(L"aelig",   0xe6); 
    Add(L"Ccedil",  0xc7); 
    Add(L"ccedil",  0xe7); 
    Add(L"Egrave",  0xc8); 
    Add(L"egrave",  0xe8); 
    Add(L"Eacute",  0xc9); 
    Add(L"eacute",  0xe9); 
    Add(L"Ecirc",   0xca); 
    Add(L"ecirc",   0xea); 
    Add(L"Euml",    0xcb); 
    Add(L"euml",    0xeb); 
    Add(L"Igrave",  0xcc); 
    Add(L"igrave",  0xec); 
    Add(L"Iacute",  0xcd); 
    Add(L"iacute",  0xed); 
    Add(L"Icirc",   0xce); 
    Add(L"icirc",   0xee); 
    Add(L"Iuml",    0xcf); 
    Add(L"iuml",    0xef); 
    Add(L"ETH",     0xd0); 
    Add(L"eth",     0xf0); 
    Add(L"Ntilde",  0xd1); 
    Add(L"ntilde",  0xf1); 
    Add(L"Ograve",  0xd2); 
    Add(L"ograve",  0xf2); 
    Add(L"Oacute",  0xd3); 
    Add(L"oacute",  0xf3); 
    Add(L"Ocirc",   0xd4); 
    Add(L"ocirc",   0xf4); 
    Add(L"Otilde",  0xd5); 
    Add(L"otilde",  0xf5); 
    Add(L"Ouml",    0xd6); 
    Add(L"ouml",    0xf6); 
    Add(L"Oslash",  0xd8); 
    Add(L"oslash",  0xf8); 
    Add(L"Ugrave",  0xd9); 
    Add(L"ugrave",  0xf9); 
    Add(L"Uacute",  0xda); 
    Add(L"uacute",  0xfa); 
    Add(L"Ucirc",   0xdb); 
    Add(L"ucirc",   0xfb); 
    Add(L"Uuml",    0xdc); 
    Add(L"uuml",    0xfc); 
    Add(L"Yacute",  0xdd); 
    Add(L"yacute",  0xfd); 
    Add(L"THORN",   0xde); 
    Add(L"thorn",   0xfe); 
    Add(L"szlig",   0xdf); 
    Add(L"yuml",    0xff); 
    Add(L"iexcl",   0xa1); 
    Add(L"cent",    0xa2); 
    Add(L"pound",   0xa3); 
    Add(L"curren",  0xa4); 
    Add(L"yen",     0xa5); 
    Add(L"brvbar",  0xa6); 
    Add(L"sect",    0xa7); 
    Add(L"die",     0xa8); 
    Add(L"copy",    0xa9); 
    Add(L"laquo",   0xab); 
    Add(L"reg",     0xae); 
    Add(L"macron",  0xaf); 
    Add(L"deg",     0xb0); 
    Add(L"plusmn",  0xb1); 
    Add(L"sup2",    0xb2); 
    Add(L"sup3",    0xb3); 
    Add(L"acute",   0xb4); 
    Add(L"micro",   0xb5); 
    Add(L"para",    0xb6); 
    Add(L"middot",  0xb7); 
    Add(L"cedil",   0xb8); 
    Add(L"supl",    0xb9); 
    Add(L"raquo",   0xbb); 
    Add(L"frac14",  0xbc); 
    Add(L"frac12",  0xbd); 
    Add(L"frac34",  0xbe); 
    Add(L"iquest",  0xbf); 
    Add(L"times",   0xd7); 
    Add(L"divide",  0xf7); 
} 
gong87034234 2018-02-11
  • 打赏
  • 举报
回复
引用 3 楼 steedhorse 的回复:
不转义的话,概念上应该算“创建新结点”,而不是“入字符串”。
<data name="xxx"> Hello<TinyXml>Hello TinyXml .... </data> 对 是插入新的节点,但是节点的内容是一个字符串,目前是因为 xml内置了‘<’ '>' '&' 等等好多的字符,这些放不进去,如果要插入这些已经预定义好的字符,那么我应该做些什么
gong87034234 2018-02-11
  • 打赏
  • 举报
回复
引用 3 楼 steedhorse 的回复:
不转义的话,概念上应该算“创建新结点”,而不是“入字符串”。
<data name="xxx"> Hello<TinyXml>Hello TinyXml .... </data>
晨星 2018-02-11
  • 打赏
  • 举报
回复
不转义的话,概念上应该算“创建新结点”,而不是“入字符串”。
gong87034234 2018-02-11
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
你想实现XML注入攻击?
就是单纯的想把其中一个节点的内容拿出来,然后单独给他加密压缩之后再把加密的内容放回去

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧