本文整理汇总了C++中XmlWriter::startElement方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlWriter::startElement方法的具体用法?C++ XmlWriter::startElement怎么用?C++ XmlWriter::startElement使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlWriter
的用法示例。
在下文中一共展示了XmlWriter::startElement方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: writeCoord
/** writes a coord value or a coord segment.
*/
static void writeCoord(XmlWriter &out, IomObject &obj)
{
/*
object: COORD
C1
102.0
C2
402.0
<COORD><C1>102.0</C1><C2>402.0</C2></COORD>
*/
out.startElement(tags::get_COORD(),0,0);
out.startElement(tags::get_C1(),0,0);
const XMLCh *c1=obj->getAttrPrim(tags::get_C1(),0);
out.characters(c1);
out.endElement(/*C1*/);
const XMLCh *c2=obj->getAttrPrim(tags::get_C2(),0);
if(c2){
out.startElement(tags::get_C2(),0,0);
out.characters(c2);
out.endElement(/*C2*/);
const XMLCh *c3=obj->getAttrPrim(tags::get_C3(),0);
if(c3){
out.startElement(tags::get_C3(),0,0);
out.characters(c3);
out.endElement(/*C3*/);
}
}
out.endElement(/*COORD*/);
}
示例2: writeSurface
/** writes a surface value.
*/
void iom_file::writeSurface(XmlWriter &out, IomObject &obj)
{
/*
object: MULTISURFACE [INCOMPLETE]
surface // if incomplete; multi surface values
object: SURFACE
boundary
object: BOUNDARY
polyline
object: POLYLINE
<SURFACE>
<BOUNDARY>
<POLYLINE .../>
<POLYLINE .../>
</BOUNDARY>
<BOUNDARY>
<POLYLINE .../>
<POLYLINE .../>
</BOUNDARY>
</SURFACE>
*/
out.startElement(tags::get_SURFACE(),0,0);
bool clipped=obj->getConsistency()==IOM_INCOMPLETE;
for(int surfacei=0;surfacei<obj->getAttrValueCount(tags::get_surface());surfacei++){
if(clipped){
out.startElement(tags::get_CLIPPED(),0,0);
}else{
// an unclipped surface should have only one surface element
if(surfacei>0){
iom_issueerr("unclipped surface with multi 'surface' elements");
break;
}
}
IomObject surface=obj->getAttrObj(tags::get_surface(),surfacei);
for(int boundaryi=0;boundaryi<surface->getAttrValueCount(tags::get_boundary());boundaryi++){
IomObject boundary=surface->getAttrObj(tags::get_boundary(),boundaryi);
out.startElement(tags::get_BOUNDARY(),0,0);
for(int polylinei=0;polylinei<boundary->getAttrValueCount(tags::get_polyline());polylinei++){
IomObject polyline=boundary->getAttrObj(tags::get_polyline(),polylinei);
writePolyline(out,polyline,true);
}
out.endElement(/*BOUNDARY*/);
}
if(clipped){
out.endElement(/*CLIPPED*/);
}
}
out.endElement(/*SURFACE*/);
}
示例3: serialize
void MALItem::serialize(XmlWriter& writer) const
{
writer.startElement("MALitem");
writer.writeAttribute("version", "1");
using std::to_string;
writer.writeElement("series_itemdb_id", to_string(series_itemdb_id));
writer.writeElement("series_title", series_title);
writer.writeElement("series_preferred_title", series_preferred_title);
writer.writeElement("series_date_begin", series_date_begin);
writer.writeElement("series_date_end", series_date_end);
writer.writeElement("image_url", image_url);
writer.startElement("series_synonyms");
std::for_each(std::begin(series_synonyms), std::end(series_synonyms),
std::bind(&XmlWriter::writeElement,
std::ref(writer),
"series_synonym",
std::placeholders::_1));
writer.endElement();
writer.writeElement("series_synopsis", series_synopsis );
writer.startElement("tags");
std::for_each(std::begin(tags), std::end(tags),
std::bind(&XmlWriter::writeElement,
std::ref(writer),
"tag",
std::placeholders::_1));
writer.endElement();
writer.writeElement("date_start", date_start);
writer.writeElement("date_finish", date_finish);
writer.writeElement("id", to_string(id));
writer.writeElement("last_updated", to_string(last_updated));
writer.writeElement("score", to_string(score));
writer.writeElement("enable_reconsuming", to_string(enable_reconsuming));
writer.writeElement("fansub_group", fansub_group);
writer.writeElement("comments", comments);
writer.writeElement("downloaded_items", to_string(downloaded_items));
writer.writeElement("times_consumed", to_string(times_consumed));
writer.writeElement("reconsume_value", to_string(reconsume_value));
writer.writeElement("priority", to_string(priority));
writer.writeElement("enable_discussion", to_string(enable_discussion));
writer.writeElement("has_details", to_string(has_details));
writer.endElement();
}
示例4: serialize
std::string AnimeSerializer::serialize(const Anime& anime) const {
XmlWriter writer;
writer.startDoc();
writer.startElement("entry");
writer.writeElement("episode", std::to_string(anime.episodes));
writer.writeElement("status", std::to_string(static_cast<int>(anime.status)));
writer.writeElement("score", std::to_string(anime.score));
writer.writeElement("downloaded_episodes", std::to_string(anime.downloaded_items));
if (anime.has_details) {
writer.writeElement("storage_type", std::to_string(static_cast<int>(anime.storage_type)));
writer.writeElement("storage_value", std::to_string(anime.storage_value));
writer.writeElement("times_rewatched", std::to_string(anime.times_consumed));
writer.writeElement("rewatch_value", std::to_string(static_cast<int>(anime.reconsume_value)));
}
auto start = Glib::Date();
start.set_parse(anime.date_start);
if (start.valid()) {
writer.writeElement("date_start", start.format_string("%m%d%Y"));
}
auto finish = Glib::Date();
finish.set_parse(anime.date_finish);
if (finish.valid()) {
writer.writeElement("date_finish", finish.format_string("%m%d%Y"));
}
if (anime.has_details) {
writer.writeElement("priority", std::to_string(static_cast<int>(anime.priority)));
writer.writeElement("enable_discussion", anime.enable_discussion?"1":"0");
}
writer.writeElement("enable_rewatching", anime.enable_reconsuming?"1":"0");
if (anime.has_details) {
writer.writeElement("comments", anime.comments);
writer.writeElement("fansub_group", anime.fansub_group);
}
std::string tags;
auto iter = anime.tags.begin();
bool was_first = true;
while (iter != anime.tags.end()) {
if (!was_first)
tags += ", ";
tags += *iter;
was_first = false;
++iter;
}
writer.writeElement("tags", tags);
writer.writeElement("rewatch_episode", std::to_string(anime.rewatch_episode));
writer.endDoc();
return writer.getString();
}
示例5: write
void JointSensor::write(XmlWriter & output) const
{
output.startElement("RobotSensor");
output.writeElement("SensorType", toString(type));
output.writeElement("SensorPortNumberA", std::to_string(portA));
output.writeElement("SensorSignalTypeA", toString(portSignal));
output.writeElement("SensorPortNumberB", std::to_string(portB));
output.writeElement("SensorSignalTypeB", toString(portSignal));
output.writeElement("SensorConversionFactor", std::to_string(conversionFactor));
output.endElement();
}
示例6: writeArc
/** writes a arc segment value.
*/
static void writeArc(XmlWriter &out, IomObject &obj)
{
/*
object: ARC
C1
103.0
C2
403.0
A1
104.0
A2
404.0
<COORD><C1>103.0</C1><C2>403.0</C2><A1>104.0</A1><A2>404.0</A2></COORD>
*/
out.startElement(tags::get_ARC(),0,0);
out.startElement(tags::get_C1(),0,0);
const XMLCh *c1=obj->getAttrPrim(tags::get_C1(),0);
out.characters(c1);
out.endElement(/*C1*/);
const XMLCh *c2=obj->getAttrPrim(tags::get_C2(),0);
out.startElement(tags::get_C2(),0,0);
out.characters(c2);
out.endElement(/*C2*/);
const XMLCh *c3=obj->getAttrPrim(tags::get_C3(),0);
if(c3){
out.startElement(tags::get_C3(),0,0);
out.characters(c3);
out.endElement(/*C3*/);
}
const XMLCh *a1=obj->getAttrPrim(tags::get_A1(),0);
out.characters(a1);
out.endElement(/*A1*/);
const XMLCh *a2=obj->getAttrPrim(tags::get_A2(),0);
out.startElement(tags::get_A2(),0,0);
out.characters(a2);
out.endElement(/*A2*/);
const XMLCh *r=obj->getAttrPrim(tags::get_R(),0);
if(r){
out.startElement(tags::get_R(),0,0);
out.characters(r);
out.endElement(/*R*/);
}
out.endElement(/*ARC*/);
}
示例7: save
/** write all baskets to an xml file.
*/
int iom_file::save()
{
// build class/attribute list
if(ilibasket.isNull()){
iom_issueerr("model required to save data");
return IOM_ERR_ILLEGALSTATE;
}
buildTagList();
// read rest of file (before we overwrite it!)
IomIterator bi=new iom_iterator(this);
while(!bi->next_basket().isNull()){
; // empty
}
// open file for write
XmlWriter out;
int ind=0;
out.open(filename);out.printNewLine();
// write header
XmlWrtAttr trsfAttr[]={XmlWrtAttr(ustrings::get_xmlns(),ustrings::get_NS_INTERLIS22())};
out.printIndent(ind);
out.startElement(tags::get_TRANSFER(),trsfAttr,sizeof(trsfAttr)/sizeof(trsfAttr[0]));out.printNewLine();
{
ind++;
out.printIndent(ind);
XStr version("2.2");
XmlWrtAttr headAttr[]={
XmlWrtAttr(ustrings::get_VERSION(),version.unicodeForm())
,XmlWrtAttr(ustrings::get_SENDER(),getHeadSecSender())
};
out.startElement(tags::get_HEADERSECTION(),headAttr,sizeof(headAttr)/sizeof(headAttr[0]));out.printNewLine();
{
ind++;
out.printIndent(ind);
out.startElement(tags::get_ALIAS(),0,0);out.printNewLine();
{
ind++;
ind--;
}
out.printIndent(ind);
out.endElement(/*ALIAS*/);out.printNewLine();
out.printIndent(ind);
out.startElement(tags::get_COMMENT(),0,0);
out.characters(getHeadSecComment());
out.endElement(/*COMMENT*/);out.printNewLine();
ind--;
}
out.printIndent(ind);
out.endElement(/*HEADERSECTION*/);out.printNewLine();
ind--;
}
// write DATASECTION
{
ind++;
out.printIndent(ind);
out.startElement(tags::get_DATASECTION(),0,0);out.printNewLine();
{
ind++;
// write all baskets
for(std::vector<IomBasket>::size_type basketi=0;basketi<basketv.size();basketi++){
IomBasket basket=basketv.at(basketi);
const XMLCh *topics=basket->getTopics();
const XMLCh *kind=encodeBasketKind(basket->getKind());
const XMLCh *startstate=basket->getKind()!=IOM_FULL ? basket->getStartState() : 0;
const XMLCh *endstate=basket->getKind()!=IOM_FULL ? basket->getEndState() : 0;
const XMLCh *consistency=encodeConsistency(basket->getConsistency());
XmlWrtAttr basketAttr[]={
XmlWrtAttr(ustrings::get_BID(),basket->getOid(),true)
,XmlWrtAttr(topics ? ustrings::get_TOPICS():0,topics)
,XmlWrtAttr(kind ? ustrings::get_KIND():0 ,kind)
,XmlWrtAttr(startstate ? ustrings::get_STARTSTATE():0,startstate)
,XmlWrtAttr(endstate ? ustrings::get_ENDSTATE():0,endstate)
,XmlWrtAttr(consistency ? ustrings::get_CONSISTENCY():0,consistency)
};
out.printIndent(ind);
if(basket->getTag()==0){
iom_issueerr("basket requires a TOPIC name");
return IOM_ERR_ILLEGALSTATE;
}
out.startElement(basket->getTag(),basketAttr,sizeof(basketAttr)/sizeof(basketAttr[0]));out.printNewLine();
{
ind++;
// write all objects
IomIterator obji=new iom_iterator(basket);
IomObject obj=obji->next_object();
while(!obj.isNull()){
out.printIndent(ind);
const XMLCh *bid=obj->getBid();
const XMLCh *ops=encodeOperation(obj->getOperation());
const XMLCh *consistency=encodeConsistency(basket->getConsistency());
XmlWrtAttr objAttr[]={
XmlWrtAttr(ustrings::get_TID(),obj->getOid(),true)
,XmlWrtAttr(bid ? ustrings::get_BID():0,bid,true)
,XmlWrtAttr(ops ? ustrings::get_OPERATION():0 ,ops)
//.........这里部分代码省略.........
示例8: writeAttr
void iom_file::writeAttr(XmlWriter &out, IomObject &obj,int attr)
{
int valueCount=obj->getAttrValueCount(attr);
if(valueCount>0){
const XMLCh *val=obj->getAttrPrim(attr,0);
// not a primitive?
if(!val){
IomObject child=obj->getAttrObj(attr,0);
// some special cases
if(child->getTag()==tags::get_COORD()){
// COORD
out.startElement(attr,0,0);
writeCoord(out,child);
out.endElement(/*attr*/);
if(valueCount>1){
iom_issueerr("max one COORD value allowed");
}
}else if(child->getTag()==tags::get_POLYLINE()){
// POLYLINE
out.startElement(attr,0,0);
writePolyline(out,child,false);
out.endElement(/*attr*/);
if(valueCount>1){
iom_issueerr("max one POLYLINE value allowed");
}
}else if(child->getTag()==tags::get_MULTISURFACE()){
// MULTISURFACE
out.startElement(attr,0,0);
writeSurface(out,child);
out.endElement(/*attr*/);
if(valueCount>1){
iom_issueerr("max one MULTISURFACE value allowed");
}
}else{
// normal case
const XMLCh *ref=child->getRefOid();
bool isRef= ref ? true : false;
// Reference-attribute or Role or EmbeddedLink?
if(isRef){
const XMLCh *extref=0;
const XMLCh *bid=0;
XMLCh itoabuf[40];
const XMLCh *orderpos=0;
if(ref){
if(child->getRefOrderPos()>0){
XMLString::binToText( child->getRefOrderPos(),itoabuf,sizeof(itoabuf)-1,10);
orderpos=itoabuf;
}
}
bid=child->getRefBid();
if(bid){
extref=ref;
ref=0;
}
XmlWrtAttr refAttr[]={
XmlWrtAttr(ref ? ustrings::get_REF() :0, ref,true)
,XmlWrtAttr(extref ? ustrings::get_EXTREF() :0, extref,true)
,XmlWrtAttr(bid ? ustrings::get_BID() :0, bid,true)
,XmlWrtAttr(orderpos ? ustrings::get_ORDER_POS():0, orderpos)
};
out.startElement(attr,refAttr,sizeof(refAttr)/sizeof(refAttr[0]));
if(child->getAttrCount()>0){
out.startElement(child->getTag(),0,0);
writeAttrs(out,child);
out.endElement(/*child*/);
}
out.endElement(/*attr*/);
if(valueCount>1){
iom_issueerr("max one reference value allowed");
}
}else{
// struct
out.startElement(attr,0,0);
int valuei=0;
while(1){
out.startElement(child->getTag(),0,0);
writeAttrs(out,child);
out.endElement(/*child*/);
valuei++;
if(valuei>=valueCount){
break;
}
child=obj->getAttrObj(attr,valuei);
}
out.endElement(/*attr*/);
}
}
}else{
out.startElement(attr,0,0);
out.characters(val);
out.endElement(/*attr*/);
if(valueCount>1){
iom_issueerr("max one primitive-type value allowed");
}
}
}
}
示例9: writePolyline
/** writes a polyline value.
*/
void iom_file::writePolyline(XmlWriter &out, IomObject &obj,bool hasLineAttr)
{
/*
object: POLYLINE [INCOMPLETE]
lineattr
object: Model.Topic.LineAttr
attr00
11
sequence // if incomplete; multi sequence values
object: SEGMENTS
segment
object: COORD
C1
102.0
C2
402.0
segment
object: ARC
C1
103.0
C2
403.0
A1
104.0
A2
404.0
segment
object: Model.SplineParam
SegmentEndPoint
object: COORD
C1
103.0
C2
403.0
p0
1.0
p1
2.0
<POLYLINE>
<LINEATTR>
<Model.Topic.LineAttr>
<attr00>11</attr00>
</Model.Topic.LineAttr>
</LINEATTR>
<COORD>
<C1>101.0</C1>
<C2>401.0</C2>
</COORD>
<COORD>
<C1>102.0</C1>
<C2>402.0</C2>
</COORD>
<Model.SplineParam>
<SegmentEndPoint>
<COORD>
<C1>103.0</C1>
<C2>403.0</C2>
</COORD>
</SegmentEndPoint>
<p0>1.0</p0>
<p1>2.0</p1>
</Model.SplineParam>
</POLYLINE>
*/
out.startElement(tags::get_POLYLINE(),0,0);
if(hasLineAttr){
IomObject lineattr=obj->getAttrObj(tags::get_lineattr(),0);
if(!lineattr.isNull()){
out.startElement(tags::get_LINEATTR(),0,0);
out.startElement(lineattr->getTag(),0,0);
writeAttrs(out,lineattr);
out.endElement(/*lineattr*/);
out.endElement(/*LINEATTR*/);
}
}
bool clipped=obj->getConsistency()==IOM_INCOMPLETE;
for(int sequencei=0;sequencei<obj->getAttrValueCount(tags::get_sequence());sequencei++){
if(clipped){
out.startElement(tags::get_CLIPPED(),0,0);
}else{
// an unclipped polyline should have only one sequence element
if(sequencei>0){
iom_issueerr("unclipped polyline with multi 'sequence' elements");
break;
}
}
IomObject sequence=obj->getAttrObj(tags::get_sequence(),sequencei);
for(int segmenti=0;segmenti<sequence->getAttrValueCount(tags::get_segment());segmenti++){
IomObject segment=sequence->getAttrObj(tags::get_segment(),segmenti);
if(segment->getTag()==tags::get_COORD()){
// COORD
writeCoord(out,segment);
}else if(segment->getTag()==tags::get_ARC()){
// ARC
writeArc(out,segment);
}else{
// custum line form
//.........这里部分代码省略.........