天天看点

c++ builder 中的 XMLDocument 类详解(5) - 获取元素内容

<code>//---------------------------------------------------------------------------</code>

<code>#ifndef Unit1H</code>

<code>#define Unit1H</code>

<code>#include &lt;Classes.hpp&gt;</code>

<code>#include &lt;Controls.hpp&gt;</code>

<code>#include &lt;StdCtrls.hpp&gt;</code>

<code>#include &lt;Forms.hpp&gt;</code>

<code>#include &lt;msxmldom.hpp&gt;</code>

<code>#include &lt;XMLDoc.hpp&gt;</code>

<code>#include &lt;xmldom.hpp&gt;</code>

<code>#include &lt;XMLIntf.hpp&gt;</code>

<code>class</code> <code>TForm1 :</code><code>public</code> <code>TForm</code>

<code>{</code>

<code>__published:   </code><code>// IDE-managed Components</code>

<code>    </code><code>TButton *btn_1;</code>

<code>    </code><code>TButton *btn_2;</code>

<code>    </code><code>TButton *btn_3;</code>

<code>    </code><code>TButton *btn_4;</code>

<code>    </code><code>TXMLDocument *XMLDocument1;</code>

<code>    </code><code>TMemo *Memo1;</code>

<code>    </code><code>void</code> <code>__fastcall FormCreate(TObject *Sender);</code>

<code>    </code><code>void</code> <code>__fastcall btn_1Click(TObject *Sender);</code>

<code>    </code><code>void</code> <code>__fastcall btn_2Click(TObject *Sender);</code>

<code>    </code><code>void</code> <code>__fastcall btn_3Click(TObject *Sender);</code>

<code>    </code><code>void</code> <code>__fastcall btn_4Click(TObject *Sender);</code>

<code>private</code><code>:   </code><code>// User declarations</code>

<code>public</code><code>:    </code><code>// User declarations</code>

<code>    </code><code>__fastcall TForm1(TComponent* Owner);</code>

<code>};</code>

<code>extern</code> <code>PACKAGE TForm1 *Form1;</code>

<code>#endif</code>

<code>#include &lt;vcl.h&gt;</code>

<code>#pragma hdrstop</code>

<code>#include "Unit1.h"</code>

<code>#pragma package(smart_init)</code>

<code>#pragma resource "*.dfm"</code>

<code>TForm1 *Form1;</code>

<code>__fastcall TForm1::TForm1(TComponent* Owner)</code>

<code>    </code><code>: TForm(Owner)</code>

<code>}</code>

<code>void</code> <code>__fastcall TForm1::FormCreate(TObject *Sender)</code>

<code>    </code><code>XMLDocument1-&gt;LoadFromFile(</code><code>"D:\\code\\B_C_B\\XMLDocument\\test.xml"</code><code>);</code>

<code>    </code><code>Memo1-&gt;Lines=XMLDocument1-&gt;XML;</code>

<code>void</code> <code>__fastcall TForm1::btn_1Click(TObject *Sender)</code>

<code>    </code><code>//访问第一个人的信息</code>

<code>    </code><code>ShowMessage(XMLDocument1-&gt;DocumentElement-&gt;ChildNodes-&gt;Nodes[0]-&gt;ChildNodes-&gt;FindNode(</code><code>"姓名"</code><code>)-&gt;Text);</code><code>// 张三</code>

<code>    </code><code>ShowMessage(XMLDocument1-&gt;DocumentElement-&gt;ChildNodes-&gt;Nodes[0]-&gt;ChildNodes-&gt;FindNode(</code><code>"性别"</code><code>)-&gt;Text);</code><code>// 男</code>

<code>    </code><code>ShowMessage(XMLDocument1-&gt;DocumentElement-&gt;ChildNodes-&gt;Nodes[0]-&gt;ChildNodes-&gt;FindNode(</code><code>"年龄"</code><code>)-&gt;Text);</code><code>// 34</code>

<code>    </code><code>//可以通过位置访问子节点,如:ChildNodes-&gt;Nodes[0] 表示子节点列表中的第一个元素</code>

<code>    </code><code>// 可以通过子节点名访问子节点, 如: ChildNodes-&gt;['姓名']</code>

<code>    </code><code>//但在节点名一样的情况下, 只能通过位置访问}</code>

<code>    </code><code>//任何情况下都可以通过位置访问, 譬如:</code>

<code>    </code><code>//ShowMessage(XMLDocument1-&gt;DocumentElement-&gt;ChildNodes-&gt;Nodes[0]-&gt;ChildNodes-&gt;nodes[0]-&gt;Text);// 张三</code>

<code>void</code> <code>__fastcall TForm1::btn_2Click(TObject *Sender)</code>

<code>    </code><code>//访问第二个人的信息</code>

<code>    </code><code>_di_IXMLNodeList nodeList;</code>

<code>    </code><code>nodeList=XMLDocument1-&gt;DocumentElement-&gt;ChildNodes;</code>

<code>    </code><code>_di_IXMLNode node=nodeList-&gt;Nodes[1];</code>

<code>    </code><code>ShowMessage(node-&gt;ChildNodes-&gt;FindNode(</code><code>"姓名"</code><code>)-&gt;Text);</code>

<code>    </code><code>ShowMessage(node-&gt;ChildNodes-&gt;FindNode(</code><code>"性别"</code><code>)-&gt;Text);</code>

<code>    </code><code>ShowMessage(node-&gt;ChildNodes-&gt;FindNode(</code><code>"年龄"</code><code>)-&gt;Text);</code>

<code>void</code> <code>__fastcall TForm1::btn_3Click(TObject *Sender)</code>

<code>    </code><code>//获得所有成员</code>

<code>    </code><code>_di_IXMLNode node;</code>

<code>    </code><code>for</code><code>(</code><code>int</code> <code>i=0;i&lt;nodeList-&gt;Count-1;i++)</code><code>//这里一定是nodelist-&gt;count-1</code>

<code>    </code><code>{</code>

<code>        </code><code>node=nodeList-&gt;Nodes[i];</code>

<code>        </code><code>ShowMessage(node-&gt;ChildNodes-&gt;FindNode(</code><code>"姓名"</code><code>)-&gt;Text);</code><code>//分别显示姓名</code>

<code>    </code><code>}</code>

<code>void</code> <code>__fastcall TForm1::btn_4Click(TObject *Sender)</code>

<code>    </code><code>//获取所有成员年龄</code>

<code>        </code><code>ShowMessage(node-&gt;ChildNodes-&gt;FindNode(</code><code>"年龄"</code><code>)-&gt;Text);</code><code>//分别显示年龄</code>

继续阅读