[c++] 使用TinyXml

今天跟學弟討論XML的document object 屬性數目問題。
首先回憶一下python DOM所描述的XML由上到下分成 Document -> Element(s) ->NodeList -> Node(s)


在python 裡頭,因為Document object是minidom lib自己建的,
取出某個Node的Attr或Text很容易。


而在TinyXml 裡頭要找做到相同的事情:
0. TiXmlDocument doc('mytest.xml') 建立Document obj
1. 使用 doc.Parse('mytest_xmlstring') 讀入xml並建立XML-tree
2. 要取得Element(s)可用
    TiXmlElement *elem = doc.FirstChildElement() or
    TiXmlElement *elem = doc.FirstChildElement('selected_element_name')
3. 要找某個Element obj裡頭特定Node的Attr or Text 可用
  *Assume only one Element in elem
  sp_attr_name, sp_attr_value


  TiXmlAttribute *attr = elem->FirstChildAttribute('specified_element_name')
  while (1):
      if (!attr) break;
      else{
           if (attr->Name() == sp_attr_name) and (attr->Value() == sp_attr_value){
               fprintf(stdout, "match.");
               break;
           }
           attr = attr->Next();    
      }


但若欲找的Element object不只一個,只好再包一層Loop了... (有夠麻煩)


我的問題是,這跟 Element objects 彼此有相同的Name, 但是有不同數目的Attributes時,
去做parsing會有問題嗎?


我想應該是沒問題的,因為還是得一個一個取嘛... 並不會因為數目不同會造成需要維護
的資料結構改變(因為parsing是給TinyXml做的)...


不過在python做比較好啦,畢竟他比較高階,越底層盡量不要太複雜比較好,
anyway... 能多做就多做吧(茶...)

Comments

Popular posts from this blog

股票評價(Stock Valuation) - 股利折現模型

openwrt feed的使用

How to convert Markdown into HTML