如何在Spring.net中设置xml属性的值?

时间:2009-06-08 11:40:10

标签: spring.net

如何设置xml属性的值?

这是我尝试过没有成功的事情:

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

Resources是一个XmlDocument字段。

2 个答案:

答案 0 :(得分:1)

只是为了澄清:此属性位于一个对象上,该对象具有一个XmlDocument字段,并且您希望将其初始化为具有根元素“resources”的空XmlDocument。

XmlDocuments并不总是最容易使用的对象,尤其是在构建时。

Spring肯定不会知道如何将字符串转换为XmlDocument。

您可能会发现使用代码生成所需的XmlDocument更容易。例如,创建一个生成XmlDocument的静态帮助器方法,并通过调用该方法设置该属性的值。

另一个(kludge-y)选项是有一个“helper”属性,它将xml作为字符串处理。例如,一个名为“_ResourcesXml”的属性,您可以将其设置为null或“”。然后,该属性将构造XmlDocument并为Resources属性设置支持字段。同样,读取_ResourcesXml可以返回Resources.OuterXml。

答案 1 :(得分: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>

无论如何,对于你得到的微小影响,这似乎非常复杂。正如纳德已经提到的,创建一个小帮手工厂是一个好主意。

另一种选择是使用expressions。您可以在配置中调用方法,例如如下:

<object id="..." type="..." expression="@(Document).CreateElement('resources')" />