如何设置 xml 属性的值?
这是我没有成功的尝试:
<property name="Resources" value="<resources/>"/>
Resources 是一个 XmlDocument 字段。
如何设置 xml 属性的值?
这是我没有成功的尝试:
<property name="Resources" value="<resources/>"/>
Resources 是一个 XmlDocument 字段。
澄清一下:此属性位于具有 XmlDocument 字段的对象上,并且您希望将其初始化为具有根元素“resources”的空 XmlDocument。
XmlDocuments 并不总是最容易使用的对象,尤其是在构造方面。
Spring 肯定不知道如何将字符串转换为 XmlDocument。
您可能会发现使用代码生成所需的 XmlDocument 更容易。例如,创建一个生成 XmlDocument 的静态帮助器方法,并通过调用该方法设置属性的值。
另一个(kludge-y)选项是有一个“助手”属性,将 xml 作为字符串处理。例如,一个名为“_ResourcesXml”的属性,您可以将其设置为 null 或“”。然后该属性将构造 XmlDocument 并为 Resources 属性设置支持字段。同样,读取 _ResourcesXml 可能会返回 Resources.OuterXml。
我认为您可以通过以下方式实现请求的结果(使用 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>
无论如何,这对于您获得的小效果来说似乎非常复杂。正如纳德已经提到的,创建一个小助手工厂是个好主意。
另一种选择是使用表达式。您可以在配置中调用方法,例如如下:
<object id="..." type="..." expression="@(Document).CreateElement('resources')" />