我有大量的XML文件與文本塊,其中許多包含未編碼的換行符。 如何在XML文本(標籤內)中搜索換行符(/ n)並將其替換爲HTML編碼的換行符,如
?如何在XML文本(標籤內)中搜索換行符?
到目前爲止我的代碼:
#include <regex>
...
std::string sInput_xml;
std::ifstream in(sFilePath_XMLFile);
// read file into input_xml
while(getline(in, sLine))
sInput_xml += sLine;
std::regex rxSearch("\>.*(\n)+.*\</");
std::regex_replace (sInput_xml, rxSearch," ");
...然後我想將字符串傳遞到快速的XML解析器。未編碼的換行符被這個(以及其他許多)解析器忽略,我試圖用
手動替換它。它完美的工作,但文件是31K線,這將需要永遠。
我甚至不知道這正則表達式是正確的,但我的VS編譯器抱怨的search_replace功能不服用三PARAMS。但是應該是一個3參數版本,如cplusplus regex replace上的示例。
你提到'標籤內,但你的正則表達式意味着標籤(內容)之間。也是正則表達式在VS2010中可用?我使用該編譯器,我必須使用Boost,因爲它不是C++ 11。另外,如果不是Dot-all模式,如果在同一行上有'。*'的話,它們會向右移動並進入標籤的中間位置。 – sln 2015-01-26 17:58:33
是,可用https://msdn.microsoft.com/de-AT/library/bb982382.aspx,我得到的,因爲轉義序列的一些警告,但它們可以被禁用。 –
masche
2015-01-27 07:13:38
鏈接你引用的是VS2013,而不是你在問題中標記的VS2010。我認爲VS2010其實並沒有C++ 11。 – sln 2015-01-27 18:40:23