本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对象属性的转换即可以,废话少说了,还是看代码了,例子也懒得去写了,相信不会很难看懂的:
unitXMLConversion;
{*******************************************
*brief:XML和对象属性的转换
*autor:linzhenqun
*date:<chsdate w:st="on" isrocdate="False" islunardate="False" day="26" month="10" year="2005">2005-10-26</chsdate>
*email:linzhengqun@163.com
*blog:http://blog.csdn.net/linzhengqun
********************************************}
interface
uses
Classes,SysUtils,xmldom,XMLIntf,oxmldom,XMLDoc;
Type
TBaseConversion=class
protected
FXMLDoc:TXMLDocument;
(*在ParenElem元素下增加一个子元素*)
functionAppendChildElement(constTagName,Value:WideString;
ParenElem:IDOMElement):IDOMElement;
(*根据TagName取得XML节点下的某一个子节点*)
functionGetSingleEleByTagName(AEle:IDOMElement;TagName:WideString):IDOMElement;
(*取得XML节点的文本*)
functionGetElementText(AElement:IDOMNode):WideString;
(*IDOMElement的text值转换成各种类型的数据,
如果AElem=nil或者text不符合某些数据类型,返回Default值*)
functionEleTextToBoolDef(AElem:IDOMElement;constDefault:Boolean):Boolean;
functionEleTextToStrDef(AElem:IDOMElement;constDefault:WideString):WideString;
functionEleTextToIntDef(AElem:IDOMElement;constDefault:Integer):Integer;
functionEleTextToFloatDef(AElem:IDOMElement;constDefault:Extended):Extended;
(*取得IDomElement的属性的值,并转换成各种类型
如果不符合数据类型,返回Default值*)
functionEleAttrToBoolDef(AElem:IDOMElement;AttrName:WideString;
constDefault:Boolean):Boolean;
functionEleAttrToStrDef(AElem:IDOMElement;AttrName:WideString;
constDefault:WideString):WideString;
functionEleAttrToIntDef(AElem:IDOMElement;AttrName:WideString;
constDefault:Integer):Integer;
functionEleAttrToFloatDef(AElem:IDOMElement;AttrName:WideString;
constDefault:Extended):Extended;
procedureObjPropertyToElements(Obj:TObject);virtual;
procedureElementsToObjProperty(Obj:TObject);virtual;
public
procedureXMLToObjProperty(XMLStream:TStream;Obj:TObject);
procedureObjPropertyToXML(XMLStream:TStream;Obj:TObject);
constructorCreate;
destructorDestroy;override;
end;
implementation
{TBaseConversion}
functionTBaseConversion.AppendChildElement(constTagName,
Value:WideString;ParenElem:IDOMElement):IDOMElement;
var
Text:IDOMText;
begin
Result:=FXMLDoc.DOMDocument.createElement(TagName);
ifValue<>''then
begin
Text:=FXMLDoc.DOMDocument.createTextNode(Value);
Result.appendChild(Text);
end;
ParenElem.appendChild(Result);
end;
constructorTBaseConversion.Create;
var
Vendor:TDOMVendor;
begin
FXMLDoc:=TXMLDocument.Create(nil);
//下面这几句代码可以去掉,则将使用MSXML来解析
//现在是用OpenXML的原生代码解析
Vendor:=DOMVendors.Find('OpenXML');
ifVendor<>nilthen
FXMLDoc.DOMVendor:=Vendor;
end;
destructorTBaseConversion.Destroy;
begin
FXMLDoc.Free;
inherited;
end;
functionTBaseConversion.EleAttrToBoolDef(AElem:IDOMElement;AttrName:WideString;
constDefault:Boolean):Boolean;
var
LNode:IDOMNode;
begin
Result:=Default;
ifAElem<>nilthen
begin
LNode:=AElem.attributes.getNamedItem(AttrName);
ifLNode<>nilthen
Result:=StrToBoolDef(LNode.nodeValue,Default);
end
end;EN-U
分享到:
相关推荐
总结起来,Java创建XML对象涉及DOM、SAX或JAXB等技术,每种方法都有其适用场景和优缺点。通过熟练掌握这些技术,可以高效地处理XML文档,实现数据的读写和交换。对于"java创建xml对象"这个项目,我们需要深入源代码...
2. **Node对象**:它是所有XML节点的基类,包括元素、属性、文本、注释等。Node对象拥有`nodeName`(节点名)、`nodeValue`(节点值)、`nodeType`(节点类型)等属性,以及`appendChild()`(添加子节点)、`...
通过结合***和XML操作基类,开发者可以轻松地实现对XML文件的读取、修改、新增和创建等功能。 在使用***进行XML操作时,XML处理基类充当着桥梁的角色,它封装了XML数据操作的细节,提供简洁的接口供开发者调用。...
这个“XMLDOM对象方法手册”很可能是一个详细阐述XMLDOM相关方法和技术的手册,通常会包含如何创建、解析、查询和操作XML文档的各种教程和参考资料。 XMLDOM的核心在于其对象模型,这些对象包括Document、Element、...
这种方法的关键在于,基类引用指向派生类对象后,通过基类引用可以访问派生类继承自基类的所有属性和方法,但不能直接访问派生类新增的那些属性和方法。如果需要访问派生类特有的部分,我们仍然需要进行类型转换。 ...
C#中的XmlNode类是所有XML节点的基类,包括元素、属性、文本等。通过XmlNode的子类如XmlElement,我们可以更方便地操作XML元素。例如,获取XML文件的根元素: ```csharp XmlElement root = doc.DocumentElement; ...
C#基类库,也称为.NET Framework类库或BCL(Base Class Library),是Microsoft .NET框架的核心组成部分,为开发者提供了丰富的API集合,用于构建各种类型的Windows应用、Web应用和服务。这个“C#基类库大全”很可能...
1、XMLDOMDocument类: XML对象文档 ->操作创建或读写(元素、节点、属性、注释)等 2、IXMLDOMNode类:每个元素或节点基本都会有的方法;作为元素和节点的基类调用 3、IXMLDOMAttribute类:就是元素或节点的属性类 4...
- **Node对象**:所有DOM节点的基类,包含通用的属性和方法,如`nodeName`、`nodeValue`、`appendChild`等。 - **Attr对象**:表示元素的属性。 - **Text对象**:表示纯文本内容。 4. **DOM与JavaScript结合** ...
3. 使用tinyxml2提供的API,如`TiXmlElement`和`TiXmlDocument`,来创建、遍历和修改XML结构。 4. 在序列化过程中,将对象的属性转换成XML元素,并添加到XML文档中。 5. 在反序列化时,解析XML文档,根据元素创建或...
3. **XmlNode类和XmlNodeList**:`XmlNode`是所有XML节点的基类,包括元素、属性、文本等。`XmlNodeList`则用于存储多个`XmlNode`对象,通常由XPath查询结果返回。我们可以遍历`XmlNodeList`,对每个节点进行增删改...
`Print`方法用于将XML对象以文本形式输出到指定文件或流中,`Row`和`Column`返回XML元素在源文件中的位置信息,`SetUserData`和`GetUserData`允许用户附加自定义数据。此外,`SetCondenseWhiteSpace`、`...
2. TiXmlAttribute:代表XML元素的属性,如`ID="1"`,包含了属性名和值。 3. TiXmlNode:抽象基类,表示DOM树中的一个节点,可以是元素、注释、声明、文档、文本或未知节点。 4. TiXmlComment:用于表示XML中的注释...
- `TiXmlNode`:作为所有XML节点的基类,包括元素、注释、处理指令和文档对象。 - `TiXmlComment`, `TiXmlDeclaration`, `TiXmlUnknown`:分别对应XML的注释、声明和未知节点。 3. **读取XML文件** 使用`...
`System.Xml.Serialization`命名空间提供了将对象序列化为XML和从XML反序列化为对象的能力。这在数据传输和持久化时非常有用。 序列化对象: ```csharp XmlSerializer serializer = new XmlSerializer(typeof...
6. **TiXmlNode**: 是所有其他类的基类,提供了通用的遍历和访问XML树结构的方法。 使用TinyXML的基本步骤如下: 1. 创建一个`TiXmlDocument`对象,加载XML文件。 2. 检查加载是否成功,通常通过`LoadFile()`方法...
3. **XmlNode**: 这是所有XML节点的基类,包括元素、属性、文本等。可以通过XmlNode的子类(如XmlElement、XmlAttribute)来访问和修改XML结构。 4. **事件驱动模型**: 在WinForm中,我们可以监听XML文件的更改事件...
`XmlNode`是所有XML节点的基类,包括元素(XmlElement)、属性(XmlAttribute)、文本(XmlText)等。`XmlNode`有一个子节点集合,可以遍历和操作XML文档的结构。 4. **XmlElement和XmlAttribute类** `XmlElement...
- `TiXmlNode`:所有XML节点的基类,包括元素、文本、注释和声明。 3. **解析XML文件**: 首先,我们需要创建一个`TiXmlDocument`对象,并使用`LoadFile()`函数加载XML文件: ```cpp TiXmlDocument doc("your_...
### TinyXML接口详解 #### TiXmlBase ...以上介绍的这些类和方法为TinyXML提供了强大的功能,使得开发者能够方便地解析、操作和创建XML文档。这些基础组件的组合使用能够满足大多数与XML相关的任务需求。