Nuva 示例代码(每日一帖)之 初识 XML
<..======================================================== == == == Macrobject Nuva Samples == == == == Copyright (c) 2004-2006 Macrobject Software == == == == ALL RIGHTS RESERVED == == == == http://www.macrobject.com == == == ========================================================..> <. var xml = System.Xml.Document'ObjectSpace' xml.Root.Props.Name = 'Schema1' foreachtname = 'Table1', 'Table2' var tObjSet = FindOrCreateObjectSetxml.Root, tname foreachtvalue = 'A', 'B' var tObj = tObjSet.Nodes.Add'Object' tObj.Props.Field1 = tname ~ '_' ~ tvalue end foreach function FindOrCreateObjectSettheParent, theName Result = theParent.FindByProp'Name', theName if Result = nil Result = theParent.Nodes.Add'ObjectSet' Result.Props.Name = theName end if end function end foreach ? xml.ToString .>
<..
【简介】
本例是一个简单的生成 XML 文档的程序。
本例的程序生成一个三层结构的简单 XML 文档,目的在于展示 Nuva 语言操作 XML 文档的能力。
【看点】
1、本例演示了 Nuva 语言在 XML 的应用
Nuva 语言提供了一个 XML 库,其中包括 XmlDocument、XmlNode、XmlNodeList 类:
XmlDocument 对象通过 System.XML.Document([名称]) 创建,其中可以包含一个名称参数,如果该名称是一个文件,则从文件读取,否则返回的 XmlDocument 的 Root 节点即可以此名称来命名。
XmlDocument 有一些属性和方法,具体可以参见<<Nuva API>>,本例用到了一下的属性和方法:
XmlDocument.Root:返回根节点(XmlNode 对象)
XmlDocument.ToString:返回 Xml 的字符串
XmlNode 有以下属性和方法在本例中使用:
XmlNode.Props:返回一个属性集,后面可以直接加上 .<PropName>,可以为此属性取值赋值
XmlNode.Nodes:返回一个节点集(XmlNodeList 对象)
XmlNode.FindByProp(theName, theValue, [inSub]):返回一个子节点,最后一个可选参数规定是否深层次递归查找所有子节点
本例用到了 XmlNodeList 的一个方法:
XmNodeList.Add(theName, [theValue]):返回一个新子节点,最后一个可选参数指定其 Value
2、本例作为示例,也定义了一些集合,用于 foreach 循环
3、本例中对于 ObjectSet 节点的创建调用了一个函数 FindOrCreateObjectSet,目的是对于相同的表名必须只能创建一次。有兴趣者可以在第一个循环的集合加入相同的表名,看看运行的结果。
【扩展】
本例可以进一步扩展以增强其实用性,比如创建真正实用的 Xml 文档用于实际编程中。
..>
本例运行结果如下:
<?xml version="1.0"?>
<ObjectSpace Name="Schema1">
<ObjectSet Name="Table1">
<Object Field1="Table1_A"/>
<Object Field1="Table1_B"/>
</ObjectSet>
<ObjectSet Name="Table2">
<Object Field1="Table2_A"/>
<Object Field1="Table2_B"/>
</ObjectSet>
</ObjectSpace>