XMLDOCUMENT 中的XMLNS 會重複在屬性中出現 |
尚未結案
|
Cindy Chiang
一般會員 發表:2 回覆:1 積分:0 註冊:2004-08-16 發送簡訊給我 |
以下問題 PRO 曾在2002年詢問過, 但無人回應.
我也遇到同樣的問題, 請問有任何高手可以回答嗎? 感激不盡... 我想利用XMLDocument 產生一份XML文件
裡面一開始是這樣的
<?xml version="1.0"?>
<test xmlns="x-schema:s_test.xml">
<user>
<name>EF-A</name>
.....
_____________________________________
如果我用以下的程式碼來產生
var XMLInt : IDOMDocument;
RootInt, NodeInt, ChildInt, AttrInt : IDOMNode; begin
XMLDocument1.Active := False;
XMLDocument1.XML.Text := '';
XMLDocument1.Active := True;
XMLInt := XMLDocument1.DOMDocument; XMLDocument1.Version := '1.0';
XMLDocument1.Encoding := 'UTF-8'; RootInt := XMLInt.appendChild(XMLInt.createElement('test'));
NodeInt := RootInt.appendChild(XMLInt.createElement('user'));
ChildInt := NodeInt.appendChild(XMLInt.createElement('name')); AttrInt := XMLInt.createAttribute('xmlns');
AttrInt.nodeValue := 'x-schema:s_test.xml';
RootInt.attributes.setNamedItem(AttrInt);
......
_______________________________________
那麼產生出來的xml會有一個問題 如下:
<?xml version="1.0"?>
<test xmlns="x-schema:s_test.xml">
<user xmlns="">
<name>EF-A</name>
...... 原本應該在第三行產生
<user>
但是卻變成了
<user xmlns=""> 多了後面的東西,但是如果把
AttrInt := XMLInt.createAttribute('xmlns');
中的 xmlns 改為其他字,就不會出現那樣的錯誤?
難道是 xmlns 不能當作是一般的 Attribute 來加入嗎?
那我該如何加入呢?
謝謝!
|
chris_shieh
高階會員 發表:46 回覆:308 積分:240 註冊:2004-04-26 發送簡訊給我 |
那個xmlns應該是元件自己加上去的
以下程式試過可以產生你要的格式
可完全自己控制 (D6/7)
uses XMLIntf, XMLDoc; procedure TForm1.Button1Click(Sender: TObject); var RootInt, NodeInt, ChildInt: IXMLNode; XMLDocument1: TXMLDocument; begin XMLDocument1:=TXMLDocument.Create(self); XMLDocument1.Active := False; XMLDocument1.XML.Text := ''; XMLDocument1.Active := True; XMLDocument1.Version := '1.0'; XMLDocument1.Encoding := 'UTF-8'; XMLDocument1.Options:=[doNodeAutoIndent]; RootInt:=XMLDocument1.AddChild('test'); RootInt.Attributes['xmlns']:='x-schema:s_test.xml'; NodeInt:=RootInt.AddChild('user'); ChildInt:=RootInt.AddChild('name'); ChildInt.NodeValue:='EF-A'; XMLDocument1.SaveToFile('C:\test.xml'); end;@瞭解越多.懂得越少@ |
Cindy Chiang
一般會員 發表:2 回覆:1 積分:0 註冊:2004-08-16 發送簡訊給我 |
引言: 那個xmlns應該是元件自己加上去的 以下程式試過可以產生你要的格式 可完全自己控制 (D6/7)Thank you Chris_shieh reply. 但是我用的是IXMLDocument 不是 TXMLDocument. 此行程式 RootInt.Attributes['xmlns']:='x-schema:s_test.xml'; 在IXMLDocument 會有問題. 可否請您繼續指教. 預先謝謝您.uses XMLIntf, XMLDoc; procedure TForm1.Button1Click(Sender: TObject); var RootInt, NodeInt, ChildInt: IXMLNode; XMLDocument1: TXMLDocument; begin XMLDocument1:=TXMLDocument.Create(self); XMLDocument1.Active := False; XMLDocument1.XML.Text := ''; XMLDocument1.Active := True; XMLDocument1.Version := '1.0'; XMLDocument1.Encoding := 'UTF-8'; XMLDocument1.Options:=[doNodeAutoIndent]; RootInt:=XMLDocument1.AddChild('test'); RootInt.Attributes['xmlns']:='x-schema:s_test.xml'; NodeInt:=RootInt.AddChild('user'); ChildInt:=RootInt.AddChild('name'); ChildInt.NodeValue:='EF-A'; XMLDocument1.SaveToFile('C:\test.xml'); end;@瞭解越多.懂得越少@ |
chris_shieh
高階會員 發表:46 回覆:308 積分:240 註冊:2004-04-26 發送簡訊給我 |
以下試過效果一樣可正確執行
uses XMLIntf, XMLDoc; procedure TForm1.Button1Click(Sender: TObject); var RootInt, NodeInt, ChildInt: IXMLNode; ixml:IXMLDocument; begin ixml:=NewXMLDocument; RootInt:=ixml.AddChild('test'); RootInt.Attributes['xmlns']:='x-schema:s_test.xml'; NodeInt:=RootInt.AddChild('user'); ChildInt:=RootInt.AddChild('name'); ChildInt.NodeValue:='EF-A'; ixml.SaveToFile('C:\test.xml'); end;@瞭解越多.懂得越少@ |
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
|
e3e452045
一般會員 發表:2 回覆:1 積分:0 註冊:2018-08-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |