在TinyXmlv1中,我可以创建一个临时Xml元素,然后按
分析文档TiXmlDocument doc;
TiXmlElement * element = new TiXmlElement( "Hello" );
TiXmlText * text = new TiXmlText( "World" );
element->LinkEndChild( text );
doc.Parse("<TAGS></TAGS>"); // It OK
现在我想通过以下方式切换到TinyXmlv2:
#include "tinyxml2.h"
using namespace tinyxml2;
int main(int argc, char* argv[])
{
tinyxml2::XMLDocument doc;
tinyxml2::XMLElement* newElm = doc.NewElement("Hello");
newElm->SetText("World");
doc.Parse("<TAGS></TAGS>"); // This will crash
return 0;
}
我无法理解它崩溃的原因。
答案 0 :(得分:0)
它不是&#34;崩溃&#34;但是来自tinyxml2的class SomeForm extends Component {
handleSubmit(e){
if (e.target.input.files.length) {
const upload_file = e.target.input.files[0];
const formData = new FormData();
formData.append('file', upload_file);
const request = axios.post(this.props.cfg_url+'/upload', formData)
.then(function(response){
console.log('successfully uploaded', upload_file);
});
} else {
console.log('You need to select a file');
}
}
render(){
return(
<Form inline onSubmit={this.handleSubmit}>
<FormGroup controlId='uploadFormId'>
<ControlLabel>Upload File:</ControlLabel>
<FormControl
type='file'
name="input-file"
label='File'
/>
</FormGroup>
<Button type='submit'>Upload</Button>
</Form>
);
}
}
,因为你是&#34;扔掉&#34; assert
。您在newElem
newElem
内创建了XMLDocument
,但doc
只是&#34;浮动&#34;作为未跟踪的节点,直到您将其插入newElem
内的特定位置。调用XMLDocument
会清除Parse
删除所有当前节点,XMLDocument
只是删除未跟踪节点的通知。
调用其中一个assert
方法,在适当的位置向文档中添加元素。并且,在您的情况下,在创建子元素之前,将调用移至XMLNode::Insert...
以创建文档元素(Parse
)。
E.g。
<TAGS>
My tinyxml2 extension提供了一个方便的帮助函数(#include "tinyxml2.h"
using namespace tinyxml2;
int main(int argc, char* argv[])
{
XMLDocument doc;
doc.Parse("<TAGS></TAGS>");
XMLElement* newElm = doc.NewElement("Hello");
newElm->SetText("World");
doc.InsertEndChild(newElem);
return 0;
}
)来在单个操作中创建和插入元素。