3

私は、フェッチxmlを使用して、mscrm2011エンティティから値を取得しています。INVALIDXMLエラーがスローされます。サンプルxmlを以下に示します。

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>
    <entity name='xyz_registrationanswer'>
         <attribute name='xyz_registrationid' />
         <attribute name='xyz_name' />
         <filter type='and'> 
            <condition attribute='xyz_name' operator='in' >  
                <value>Do you want to subscribe to 1 & 2?</value>         
            </condition> 
        </filter> <order attribute='xyz_name' descending='false' />
    </entity>
</fetch>

問題を調査することにより、1と2の間の&記号である原因を見つけました。

<value>Do you want to subscribe to 1 & 2?</value> 

1-誰かがこの問題を修正する方法を教えてもらえますか?

2-私がそれらを扱うことができるように他の違法な文字は何ですか?

よろしく。

4

3 に答える 3

5

XMLには、エンティティとしてエンコードする必要のある5つの「不正な」文字があります。

<as&lt;
> as&gt;
'として&apos;
"as&quot;
&as&amp;

これがHttpUtility.HtmlEncode()効果的に行うことです。

ウムラウト文字など、HTMLで使用するときにエンコードする必要があるものもありますが、Unicode XMLの場合は、これら5つだけを絶対に処理する必要があります。

于 2012-07-05T17:25:46.153 に答える
3

HttpUtility.HtmlEncode()は、不正な文字(<>&'")を処理することで機能しました。

<value>HttpUtility.HtmlEncode("Do you want to subscribe to 1 & 2?")</value>  

詳細については、以下の記事を参照してください。

XMLファイル内の特殊文字を見つけてVisualC#.NETで置き換える方法

于 2012-07-05T10:14:36.430 に答える
2

HttpUtilityは部分信頼環境ではサポートされていないため、実際にはではなく使用System.Net.WebUtility.HtmlEncode()します。HttpUtility.HtmlEncode()言い換えれば、CRMOnlineのようにサンドボックス化されたプラグインで。

@GCATNIMは、これらの両方の方法でカバーされる「不正な文字」について正しく言及しています。

于 2012-10-05T16:06:14.103 に答える