1

私はCastle Windsor IoCを使用します。 XMLファイルからIoCのオブジェクトを設定したいクラスはいくつかのプロパティを持つPOCOのみです。XMLファイルからウィンザーIoCを設定する - 特別なチャットをXML要素の値で

私の問題は、プロパティの値が特殊文字を含む文字列であることです。

たとえば、IoCのconfigureオブジェクトに使用するXMLがここにあります。要素ログオンが特別文字の文字列が含まれているため

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

このコードのクラッシュ:

<?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#のコードです。

は、私はこのエラーを取得する:

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

のInnerException:

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

のStackTrace:それは私がXML要素と使用の値に特殊文字を持つことができますどのような方法が存在し

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;として&をエスケープする必要があることを確認していない。また

<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

+0

いいえ、できません(CDATAを使用しない場合)。 XMLで '&'をどのように表現すればよいのですか?なぜあなたは "元のフォーマット"にしたいと思いますか? – svick

+0

私はCDATAメソッドを試してみましょう。メソッドのURLを[CDATA [URL]]に入れておくと、よりクリアで&ampの後ろに置くことができます。 – arva

関連する問題