XMLData の使用

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  ユーザー レファレンス > メカニズム >

XMLData の使用

XMLData は現在表示されている XML ファイルの要素へのアクセスを与えます。必要なすべての変更を XML 構造の要素に対して行うことができます。XMLData の主な機能は以下のとおりです:

 

1.全ての種類の要素の名前と値へのアクセス (例: 要素、属性)。

 

2.全ての種類の新規の要素の作成。

 

3.新規の要素の挿入と追加。

 

4.既存の子要素の削除。

 

XMLSpy API で既に使用しており、XMLData インターフェイスの使用に詳しい場合は、  XML ファイルに新規の要素が挿入、または、既存の要素の名前が変更される場合考慮する点があることに注意してください。 「新規の XMLData オブジェクトの作成と挿入」「要素の名前と値」を参照してください。

 

XMLData の構造

XMLData インターフェイスを使用する前に、既存の XML ファイルは XMLData 構造内にどのようにマップされるかを知る必要があります。 考慮する重要な点は、XMLData は属性のためにオブジェクトの個別のブランチを持たないということです。

 

要素の属性は要素の子でもあります。 XMLData.Kind プロパティは要素の子の異なる型の差分を明確にする機会を与えます。

 

サンプル:

 

この XML コード、

 

 <ParentElement>

         <FirstChild attr1="Red" attr2="Black">

                 This is the value of FirstChild

         </FirstChild>

         <SecondChild>

                 <!--Your Comment-->

                 </DeepChild>

         </SecondChild>

         This is Text

 </ParentElement>

 

は次の XMLData オブジェクト構造にマップされています:

 

 api_XMLData

 

ファイルの内部の全ての XML 要素の親はプロパティ Authentic.XMLRoot です。この XMLData オブジェクトを使用して、構造内の他の全ての XML 要素を参照します。

 

要素の名前と値

ToXML 要素の全ての型の名前と値を取得し変更するには、XMLData.NameXMLData.TextValue プロパティを使用します。 XMLData オブジェクトの一部と空の要素は関連付けられたテキストの値を持っていません。 Authentic View 内の既存の XML 要素の名前を変更することは奨励されません。名前は Authentic View が要素のコンテンツがどのように表示するか影響するため重要です。るかを影響します。詳細に関しては StyleVision ドキュメンテーションを参照してください。

 

新規の XMLData オブジェクトの作成と挿入

新規の XML 言語エントリの作成には次のステップが必要です:

 

1.新規の XMLData オブジェクトを作成します:

Authentic.CreateChild メソッドを使用して新規の XMLData オブジェクトを作成します。新規の XML エンティティを挿入する前に名前と値を設定します (ポイント3を参照)。

 

2.新規の XMLData オブジェクトのための正確な場所を検索します:

新規の XMLData オブジェクトを挿入するには、親への参照を最初に取得する必要があります。  新規の子が親の最後の子になる場合は、 XMLData.AppendChild メソッドを使用して XMLData オブジェクトを挿入します。

子オブジェクトのシーケンス内で新規の子がロケートされる場合、 XMLData.GetFirstChildXMLData.GetNextChild を使用して子の反復子を新規の子が挿入される前に移動してください。

 

3.XMLData.InsertChild を使用して新規の子を挿入します。新規の子は現在の子のすぐ前に挿入されます。Authentic View 内では、作成された要素の追加の子ノードが XML ファイルと追加される場合があります。これは StyleVision を使用して変更することのできるノード設定により異なります。

 

次のサンプルは、<FirstChild> と <SecondChild> 要素の間に3番目の子を追加します:

 

 Dim objParent

 Dim objChild

 Dim objNewChild

 

 Set objNewChild = objPlugIn.CreateChild(spyXMLDataElement)

 objNewChild.Name = "OneAndAHalf"

 

 'objParent is set to <ParentElement>

 'GetFirstChild(-1) gets all children of the parent element

 'and move to <SecondChild>

 Set objChild = objParent.GetFirstChild(-1)

 Set objChild = objParent.GetNextChild

 

 objParent.InsertChild objNewChild

 Set objNewChild = Nothing

 

子要素はと区別な順序で挿入されます。他の子要素の後のシーケンスに属性を挿入することは回避してください。 これは、属性が他の型の前に来る要素を持つことができず、また、他の要素は型属性の前に来る要素を持つことができないことを意味します。

 

Authentic View は属性以外の XML 要素のテキストの値を表示するために特別な処理を必要とします。 テキスト(またはコンテンツ) は型テキストの追加子ノードの一部である必要があります。このような要素をパラメーターの値 6 を持つ Authentic.CreateChild を使用して作成することができます。要素のテキストの値を直接設定する代わりに、子ノードのテキストの値を設定してください。

 

既存の XMLData オブジェクトのコピー

既存の XMLData オブジェクトを同じファイル内の異なる場所に挿入数する場合、 XMLData.InsertChild と XMLData.AppendChild メソッドを使用することはできません。これらのメソッドは新規の XMLData オブジェクトのためにのみ使用することができます。

 

InsertChild または AppendChild を使用する代わりに、手動でオブジェクトを階層的にコピーすることができます。 JavaScript で書かれている次の機能は、でかかれており、 再帰的に XMLData をコピーするために使用します:

 

 // this function returns a complete copy of XMLData object

 function GetCopy(objXMLData)

 {

         var objNew;

         objNew = objPlugIn.CreateChild(objXMLData.Kind);

 

         objNew.Name = objXMLData.Name;

         objNew.TextValue = objXMLData.TextValue;

 

         if(objXMLData.HasChildren)        {

                 var objChild;

                 objChild = objXMLData.GetFirstChild(-1);

         

                 while(objChild)        {

                         try {

                                 objNew.AppendChild(GetCopy(objChild));

                                 objChild = objXMLData.GetNextChild();

                         }

                         catch(e) {

                                 objChild = null;

                         }

                 }

         }

 

         return objNew;

 }

 

 

XMLData オブジェクトの削除

XMLData は子オブジェクトの削除のための2つのメソッド XMLData.EraseAllChildrenXMLData.EraseCurrentChild を与えます。XMLData オブジェクトを削除するには、削除する要素の親へのアクセスが必要です。 親 XMLData オブジェクトへの参照を取得するために XMLData.GetFirstChildXMLData.GetNextChild を使用してください。XML 要素の削除方法のサンプルは XMLData.EraseAllChildrenXMLData.EraseCurrentChild のメソッドの説明を確認してください。

 


(C) 2019 Altova GmbH