更新 1
这是我目前将文本加载到我的 WT 项目中的方式。
wApp->require("ace.js");
//orignal XML, reads in incorrectly on one line
//std::string data = ReadFile("Q:\\settings.xml");
//XML after being formatted in notepad to look like xml, reads in correctly
//std::string data = ReadFile("Q:\\settings.txt");
//changed extension back to XML, edited in notepad++ to XML format, reads in correctly
std::string data = ReadFile("Q:\\settings_from_text.xml");
//test xml tag, reads in correctly
//std::string data = "<tag_1>some tag content</tag_1>";
//test xml tag with newline, reads in incorrectly on one line, doesnt read newline
//std::string data = "<tag_1>some tag content</tag_1>\n<tag_1>some tag content</tag_1>";
_ace_editor = new WText(data, Wt::PlainText);
//_ace_editor->setText(data);
_ace_editor->setInline(false);
// A WContainerWidget is rendered as a div
_ace_editor->resize(1000, 500);
std::string editor_ref = _ace_editor->jsRef(); // is a text string that will be the element when executed in JS
std::string command =
editor_ref + "._ace_editor = ace.edit(" + editor_ref + ");" +
editor_ref + "._ace_editor.setTheme(\"ace/theme/chrome\");" +
editor_ref + "._ace_editor.getSession().setMode(\"ace/mode/xml\");";// +
//editor_ref + "._ace_editor.setValue(\"" + data + "\");";
_ace_editor->doJavaScript(command);
另外,这里是 ReadFile 函数
std::ifstream in(path, std::ios::in | std::ios::binary);
if(in)
{
std::string contents;
in.seekg(0, std::ios::end);
contents.resize(in.tellg());
in.seekg(0, std::ios::beg);
in.read(&contents[0], contents.size());
in.close();
return(contents);
}
throw(errno);
原帖
我正在尝试将一些 XML 文件加载到我嵌入 WT ( http://www.webtoolkit.eu/wt?wtd的 Ace ( http://ajaxorg.github.io/ace/#nav=about ) 编辑器中=rqBfShGlNupXgK3M1sWOxUk1Loz3BsW0 ) 页。问题在于,无论出于何种原因,XML 文件的所有标签都从加载中省略了。示例:具有以下内容的 XML 文件
<?xml version="1.0"?>
<settings>
<tag_1>some tag content</tag_1>
<tag_2/>
</settings>
将被加载为
some tag content
我需要整个 XML 文件,而不仅仅是标签的内容。
在做了一些研究之后,我在不同的论坛上发现很多其他人都在问同样的问题,但到目前为止我所尝试的一切都没有奏效,这让我来到了这里。
这包括将 Ace 模式设置为 XML、在将文本设置为 ace 窗口之前尝试将文本加载到不同的容器中、更改配色方案以及以不同的方式解析文件。
我正在使用 Visual Studio 2010,从调试中我可以看到该文件确实被完全读入带有所有标签的字符串中,但是在将其设置为 Ace 窗口之后,它们被省略了。