1

我使用Castle Windsor IoC。我想從XML文件中的IoC中配置對象。類只是具有一些屬性的POCO。從XML文件配置Windsor IoC - XML元素值中的特殊字符

我的問題是,屬性的​​值是包含特殊字符的字符串。

例如,這裏是我在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]"} 

的InnerException:

{"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元素和利用價值這個用於確認Windows IoC的XML文件?

我不知道是否有可能

回答

4

你需要躲避&&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> 

有一個在該URL中沒有其他字符在XML中是特殊的。

+0

謝謝,你。但我想在原始格式的LogOn元素中有URL。不是編輯裏面的文本...它存在的方式? – arva 2012-03-04 16:32:20

+0

不,你不能(除非你想使用CDATA)。這就是你如何用XML表示'&'。爲什麼你想要「原始格式」? – svick 2012-03-04 16:35:04

+0

我會嘗試CDATA方法..因爲不舒服編輯manualy&爲普通用戶。將URL放入[CDATA [URL]]的方法更清晰,然後將放大器放在&後面。 – arva 2012-03-04 18:59:11