PBDOM解析XML 和xml基础知识

来源:互联网 发布:数据库备份还原软件 编辑:程序博客网 时间:2024/06/15 04:26

前一阵子,工作需要做解析XML,很郁闷以前都没做过,上网各种查资料,有说pbdom的有说用微软那个自带插件的,百度的例子都有一句就是:“请先了解xml的基础知识........”,因为很懒...一直没上网查xml的基础知识.....干看pbdom各种看不懂,最近先了解了xml,再看pbdom终于看明白了,也写了总结,在这里与还在干pb研发的新手分享下。

 先分享下网上摘下的xml:

Element是Node的扩展,所以也更实用一些。例如,用Element可以方便的获得Node的属性getAttribute(String attrName)如果用Node,可以得到一个属性集,还要进一步检索才可得到想要的属性。一个结点不一定是一个元素,而一个元素一定是一个结点。

Element是Node的子集,XmlNode表示一个节点,包括XmlElement(元素)和XmlAttribute(属性)等。 如:

<Alarm lock="true">             //node  
      <Time>                       //node  
          StringValue              //node  
      </Time>                      //node  
</Alarm>                           //node 
  以上Alarm(元素节点),lock(属性节点),Time(元素节点),StringValue(文本节点)都是Node,但是只有 <Alarm>......</Alarm>和<Time>StringValue</Time>是Element  

 

主要理解 xml的三类节点 “元素节点”“属性节点”“文本节点”

再看下我调用pbdom写的代码:

//功能:读取文本节点到二维数组里
//参数 as_xml 需要解析的xml ,as_xmlreturn[50,50] 返回的数组
//成功1 失败0
int i,ii
string ls_mess
long ll_ret,ll_row
PBDOM_BUILDER pbdom_builder_new
PBDOM_DOCUMENT pbdom_doc
pbdom_builder_new = Create PBDOM_BUILDER
//解析xml,生成Document
pbdom_doc = pbdom_builder_new.BuildFromString(as_xml)
//PBDOM元素
PBDOM_ELEMENT pbdom_elem ,pbdom_elem1
PBDOM_ELEMENT pbdom_elem_row[],pbdom_elem_column[] 
pbdom_elem  = Create PBDOM_ELEMENT
pbdom_elem1  = Create PBDOM_ELEMENT
pbdom_elem = pbdom_doc.GetRootElement()
//messagebox("ii",pbdom_elem.getName())//取得最外层节点名称
//messagebox("i11i",pbdom_elem.hasChildElements())//element的所有子元素个数

pbdom_elem1 = pbdom_elem.getChildElement("out_code") // 相当于实例化 节点名称为out_code节点

ls_mess=pbdom_elem1.gettext() //取得此节点下的 “ 文本节点”

pbdom_elem1 = pbdom_elem.getChildElement("data") // 相当于实例化 节点名称为data节点

//ll_row = long(pbdom_elem1.GetAttributeValue("rowcount"))//读取rowcount的“属性节点”

pbdom_elem1.GetChildElements("row",pbdom_elem_row[])//data节点下面的所有row的“元素节点” 存入数组
for i=1 to upperbound(pbdom_elem_row)
 pbdom_elem_row[i].GetChildElements("column",pbdom_elem_column[])//row节点下面的所有column“元素节点”存入数组
 for ii = 1 to upperbound(pbdom_elem_column)
  as_xmlreturn[i,ii]=pbdom_elem_column[ii].gettext()//节点.gettext() 文本节点
 next
next

return 1

 

原创粉丝点击