我想动态创建XMLDOCUMENT ,取某个节点值,可是以下代码编译通过,却不能执行(50分)

  • 主题发起人 happyprg
  • 开始时间
H

happyprg

Unregistered / Unconfirmed
GUEST, unregistred user!
我想动态创建XMLDOCUMENT ,取某个节点值,可是以下代码编译通过,却不能执行,请各位指点。
procedure TForm1.Button1Click(Sender: TObject);
var
// a:txmlparse;
a: TXMLDocument;
b:string;
begin
// a:=TXMLDocument.Create(self);
//a.FileName:='http://localhost/xml/web.xml';
a:=TXMLDocument.Create('http://localhost/xml/web.xml');
a.Active:=true;
b:=a.DocumentElement.ChildNodes['servlet'].ChildNodes['display-name'].Text;
showmessage(b);
end;
 
xml file 如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN' 'http://java.sun.com/j2ee/dtds/web-app_2_2.dtd'>
<web-app>
<display-name>HelloWebTier</display-name>
<description>Web tier for JEE example: hello</description>
<servlet>
<servlet-name>hello</servlet-name>
<display-name>helloServlet</display-name>
<description>Hello servlet</description>
<servlet-class>com.inprise.examples.j2ee.hello.HelloWorldServlet</servlet-class>
</servlet>
<session-config>
<session-timeout>54</session-timeout>
</session-config>
<welcome-file-list>

<welcome-file>HelloWorld.html</welcome-file>
</welcome-file-list>
<ejb-ref>
<description>The hello EJB</description>
<ejb-ref-name>ejb/hello</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.inprise.examples.j2ee.hello.HelloHome</home>
<remote>com.inprise.examples.j2ee.hello.Hello</remote>
</ejb-ref>
</web-app>

HELP ME!
 
为什么不用
procedure TForm1.Button1Click(Sender: TObject);
var
a: TXMLDocument;
b:string;
begin
a:=TXMLDocument.Create(self);
a.FileName:='http://localhost/xml/web.xml';
a.Active:=true;
b:=a.DocumentElement.ChildNodes['servlet'].ChildNodes['display-name'].Text;
showmessage(b);
end;
这样可以呀
 
帮助里说可以这样做TXMLDocument.Create('http://localhost/xml/web.xml');
但是出错,看来是delphi的问题吧,不知道会不会是bug。
可能和没有owner有关,我用这个方法查看它的owner就出异常,看不了。
 
TO JACER :
我不用
a:=TXMLDocument.Create(self);
而用
a =TXMLDocument.Create('http://localhost/xml/web.xml');
是想把TXMLDocument放在一个UNIT 里,不是FORM里 ,只能用第二种方法传参,看来是DELPHI 6 的BUG
了。
不过多谢关注,还会给分。
OVER
 
不要结束呀!!
'display-name' 的text如果是英文,showmessage是乱码
即使设了encoding是 iso-8859-1
 
//encoding是 iso-8859-1
用gb2312
 
顶部