2009-06-08 6 views

答えて

1

明確にする:このプロパティは、XmlDocumentであるフィールドを持つオブジェクト上にあり、ルート要素 "resources"を持つ空のXmlDocumentに初期化する必要があります。

XmlDocumentsは、特に建設に関しては、常に最も簡単なオブジェクトではありません。

Springは、文字列をXmlDocumentに変換する方法を理解していません。

コードを使用して、必要なXmlDocumentを生成する方が簡単です。たとえば、XmlDocumentを生成する静的ヘルパーメソッドを作成し、そのメソッドを呼び出してプロパティの値を設定します。

別の(kludge-y)オプションは、xmlを文字列として扱う "ヘルパー"プロパティを持つことです。たとえば、 "_ResourcesXml"という名前のプロパティをnullまたは ""に設定します。プロパティは、XmlDocumentを作成し、Resourcesプロパティのバッキングフィールドを設定します。同様に、_ResourcesXmlを読み取ると、Resources.OuterXmlが返されます。

0

私はあなたがこの(MethodInvokingFactoryObjectを使用して)のようなもので、要求の結果を得ることができると思います。とにかく

<object id="Document" type="System.Xml.XmlDocument, System.Xml" /> 
    <object type="Spring.Objects.Factory.Config.MethodInvokingFactoryObject, Spring.Core"> 
    <property name="TargetObject"> 
     <ref local="Document" /> 
    </property> 
    <property name="TargetMethod" value="AppendChild" /> 
    <property name="NamedArguments"> 
     <dictionary> 
     <entry key="newChild"> 
      <object type="Spring.Objects.Factory.Config.MethodInvokingFactoryObject, Spring.Core"> 
      <property name="TargetObject"> 
       <ref local="Document" /> 
      </property> 
      <property name="TargetMethod" value="CreateElement" /> 
      <property name="NamedArguments"> 
       <dictionary> 
       <entry key="name" value="resources" /> 
       </dictionary> 
      </property> 
      </object> 
     </entry> 
     </dictionary> 
    </property> 
    </object> 

、これはあなたが得るほとんど効果のための非常に複雑なようです。 Naderがすでに述べたように、小さなヘルパーファクトリを作成することをお勧めします。

もう1つのオプションはexpressionsです。 config内のメソッドを呼び出すことができます。次のようになります。

<object id="..." type="..." expression="@(Document).CreateElement('resources')" /> 
関連する問題