1

Castle Windsor 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は XML の特殊文字で&amp;あるため、エスケープする必要があります。&

<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 で特別な他の文字はありません。

于 2012-03-04T16:26:14.950 に答える