1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Castle Game Engine: CastleXMLUtils: Class TXMLElementIterator</title>
<meta name="generator" content="PasDoc 0.13.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<table class="container"><tr><td class="navigation">
<h2>Castle Game Engine</h2><p><a href="introduction.html" class="navigation">Introduction</a></p><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
<a name="TXMLElementIterator"></a><h1 class="cio">Class TXMLElementIterator</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td>Fields</td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td><a class="section" href="#PasDoc-Properties">Properties</a></td></tr></table>
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
<p class="unitlink">
<a href="CastleXMLUtils.html">CastleXMLUtils</a></p>
<h2 class="declaration">Declaration</h2>
<p class="declaration">
<code>type TXMLElementIterator = class(TObject)</code></p>
<h2 class="description">Description</h2>
<p>
Iterate over all children elements of given XML element.
<p>Without this, typical iteration looks like
<p></p>
<pre class="longcode">
<span class="pascal_keyword">var</span>
<span class="pascal_keyword">Index</span>: Integer;
ChildrenList: TDOMNodeList;
ChildNode: TDOMNode;
ChildElement: TDOMElement;
<span class="pascal_keyword">begin</span>
ChildrenList := Element.ChildNodes;
<span class="pascal_keyword">try</span>
<span class="pascal_keyword">for</span> <span class="pascal_keyword">Index</span> := <span class="pascal_numeric">0</span> <span class="pascal_keyword">to</span> ChildrenList.Count - <span class="pascal_numeric">1</span> <span class="pascal_keyword">do</span>
<span class="pascal_keyword">begin</span>
ChildNode := ChildrenList.Item[<span class="pascal_keyword">Index</span>];
<span class="pascal_keyword">if</span> ChildNode.NodeType = ELEMENT_NODE <span class="pascal_keyword">then</span>
<span class="pascal_keyword">begin</span>
ChildElement := ChildNode <span class="pascal_keyword">as</span> TDOMElement;
<span class="pascal_numeric"></span>... here goes your code <span class="pascal_keyword">to</span> process ChildElement <span class="pascal_numeric"></span>...
<span class="pascal_keyword">end</span>;
<span class="pascal_keyword">end</span>;
<span class="pascal_keyword">finally</span> FreeChildNodes(ChildrenList); <span class="pascal_keyword">end</span>;
<span class="pascal_keyword">end</span>;
</pre>
<p>
<p>... which is an easy code, but it becomes tiresome to write this over and over again, especially for units that heavily process XML (like X3D XML or Collada readers). So this class allows you to write instead
<p></p>
<pre class="longcode">
<span class="pascal_keyword">var</span>
I: TXMLElementIterator;
<span class="pascal_keyword">begin</span>
I := TXMLElementIterator.Create(Element);
<span class="pascal_keyword">try</span>
<span class="pascal_keyword">while</span> I.GetNext <span class="pascal_keyword">do</span>
<span class="pascal_keyword">begin</span>
<span class="pascal_numeric"></span>... here goes your code <span class="pascal_keyword">to</span> process I.Current <span class="pascal_numeric"></span>...
<span class="pascal_keyword">end</span>;
<span class="pascal_keyword">finally</span> FreeAndNil(I) <span class="pascal_keyword">end</span>;
<span class="pascal_keyword">end</span>;
</pre>
<p></p>
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
<ul class="hierarchy"><li class="ancestor">TObject</li>
<li class="thisitem">TXMLElementIterator</li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>constructor <b><a href="CastleXMLUtils.TXMLElementIterator.html#Create">Create</a></b>(ParentElement: TDOMElement);</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>destructor <b><a href="CastleXMLUtils.TXMLElementIterator.html#Destroy">Destroy</a></b>; override;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a href="CastleXMLUtils.TXMLElementIterator.html#GetNext">GetNext</a></b>: boolean; virtual;</code></td>
</tr>
</table>
<a name="PasDoc-Properties"></a><h3 class="summary">Properties</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a href="CastleXMLUtils.TXMLElementIterator.html#Current">Current</a></b>: TDOMElement read FCurrent;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Methods</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(ParentElement: TDOMElement);</code></td>
</tr>
<tr><td colspan="2">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Destroy"></a><code>destructor <b>Destroy</b>; override;</code></td>
</tr>
<tr><td colspan="2">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="GetNext"></a><code>function <b>GetNext</b>: boolean; virtual;</code></td>
</tr>
<tr><td colspan="2">
</td></tr>
</table>
<h3 class="detail">Properties</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Current"></a><code>property <b>Current</b>: TDOMElement read FCurrent;</code></td>
</tr>
<tr><td colspan="2">
</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var u=(("https:" == document.location.protocol) ? "https" : "http") + "://michalis.ii.uni.wroc.pl/piwik-castle-engine/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Piwik Code -->
<noscript>
<!-- Piwik Image Tracker -->
<img src="http://michalis.ii.uni.wroc.pl/piwik-castle-engine/piwik.php?idsite=1&rec=1" style="border:0" alt="" />
<!-- End Piwik -->
</noscript>
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.13.0</a> on 2015-06-15 04:43:13</em>
</span>
</td></tr></table></body></html>
|