1

我使用温莎城堡 IoC。我想从 XML 文件中配置 IoC 中的对象。类只是具有某些属性的 POCO。

我的问题是属性的值是包含特殊字符的字符串。

例如这里是我在 IoC 中用于配置对象的 XML。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <components>
    <component id="pokecUrls" 
               type="Pk.Common.Entities.Communication.PkcUrls, Pk.Common" 
               lifestyle="singleton">
      <parameters>

        <LogOn>https://pk.zet.com/overenie?isWap=0&uri=http%3A%2F%2Fpk.zet.com%2F</LogOn>

      </parameters>
    </component>
  </components>
</configuration>

这是C#代码:

_container.Install(Configuration.FromXmlFile("PkcCoreSettings\\PkUrls.xml"));
var urls = _container.Resolve<Pkrls>();
Assert.IsNotNull(urls);

此代码崩溃,因为元素 LogOn 包含带有特殊字符的字符串。

我收到此错误:

{"Error processing node resource FileResource: [PkUrls.xml] [filepath]"}

内部异常:

{"An error occurred while parsing EntityName. Line 11, position 61."}

堆栈跟踪:

  at Castle.Windsor.Configuration.Interpreters.XmlProcessor.XmlProcessor.Process(IResource resource) in c:\BuildAgent\work\9834359f44c23fee\src\Castle.Windsor\Windsor\Configuration\Interpreters\XmlProcessor\XmlProcessor.cs:line 115
   at Castle.Windsor.Configuration.Interpreters.XmlInterpreter.ProcessResource(IResource source, IConfigurationStore store, IKernel kernel) in c:\BuildAgent\work\9834359f44c23fee\src\Castle.Windsor\Windsor\Configuration\Interpreters\XmlInterpreter.cs:line 83
   at Castle.Windsor.Installer.ConfigurationInstaller.Castle.MicroKernel.Registration.IWindsorInstaller.Install(IWindsorContainer container, IConfigurationStore store) in c:\BuildAgent\work\9834359f44c23fee\src\Castle.Windsor\Windsor\Installer\ConfigurationInstaller.cs:line 74
   at Castle.Windsor.WindsorContainer.Install(IWindsorInstaller[] installers, DefaultComponentInstaller scope) in c:\BuildAgent\work\9834359f44c23fee\src\Castle.Windsor\Windsor\WindsorContainer.cs:line 319

它的存在方式是如何在 XML 元素的值中包含特殊字符并将此 XML 文件用于配置 Windows IoC?

我不确定这是否可能

4

1 回答 1

4

您需要转义&as &amp;,因为&它是 XML 中的特殊字符:

<LogOn>https://pk.zet.com/overenie?isWap=0&amp;uri=http%3A%2F%2Fpk.zet.com%2F</LogOn>

或者,您可以将其写为CDATA

<LogOn><![CDATA[https://pk.zet.com/overenie?isWap=0&uri=http%3A%2F%2Fpk.zet.com%2F]]></LogOn>

There are no other characters in that URL that are special in XML.

于 2012-03-04T16:26:14.950 回答