Comment définissez-vous une valeur d'une propriété xml dans Spring.net?

StackOverflow https://stackoverflow.com/questions/964488

  •  12-09-2019
  •  | 
  •  

Question

Comment définissez-vous une valeur d'une propriété xml?

Voici ce que j'ai essayé sans succès:

<property name="Resources" value="&#60;resources/&#62;"/>

Ressources est un champ XmlDocument.

Était-ce utile?

La solution

Juste pour préciser:. Cette propriété est un objet qui a un champ qui est un XmlDocument, et vous voulez qu'il soit initialisé à un XmlDocument vide avec l'élément racine « ressources »

xmldocuments ne sont pas toujours les objets les plus faciles à travailler avec, en particulier en matière de construction.

Le printemps sûr ne saura pas comment transformer une chaîne en un XmlDocument.

Vous trouverez peut-être plus facile à utiliser le code pour générer le XmlDocument que vous voulez. Par exemple, créer une méthode d'assistance statique qui génère le XmlDocument, et régler la valeur de la propriété en appelant cette méthode.

Une autre option (bidouille-y) est d'avoir une propriété « aide » qui traite de xml sous forme de chaîne. Par exemple, une propriété appelée « _ResourcesXml » que vous définissez null ou « ». La propriété serait alors construire le XmlDocument et définir le champ de soutien pour la propriété des ressources. De même, la lecture _ResourcesXml pourrait revenir Resources.OuterXml.

Autres conseils

Je pense que vous pouvez obtenir le résultat demandé quelque chose comme ça (en utilisant le 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>

En tout cas, cela semble très complexe pour le peu d'effet que vous obtenez. Comme Nader déjà mentionné, il est une bonne idée de créer une petite usine d'aide.

Une autre option consiste à utiliser . Vous pouvez appeler les méthodes dans la configuration, par exemple comme suit:

<object id="..." type="..." expression="@(Document).CreateElement('resources')" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top