4

C#でSOAPエンベロープを手動で作成しようとしています。私は最初、StringBuilderを介してビルドし、LoadXmlメソッドを介してXmlDocumentに追加するというルートをたどりました。ただし、実行すると、次の行に沿って例外が発生します。

System.Xml.XmlException:':'文字、16進値0x3Aは、名前に含めることができません。行1、位置200。

私が作成しようとしている封筒は次のとおりです。

<soap:Envelope 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XmlSchema">
    <soap:Header>
        <wsrp:path
            soap:actor="http://schemas.xmlsoap.org/soap/actor/next"
            soap:mustUnderstand="1"
            xmlns:wsrp="http://schemas.xmlsoap.org/rp">
        <wsrp:action>
            http://abcd.com/Webservices
        </wsrp:action>
        <wsrp:to>
        http://abcd.com/Webservices.asmx
        </wsrp:to>
        <wsrp:id>
    uuid:aaaaa0a7-9e46-432b-8f1b-35037077601f
    </wsrp:id>
        </wsrp:path>
        <wsu:Timestamp
        xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
            <wsu:Created>
            2012-11-30T10:38:13z
            </wsu:Created>
            <wsu:Expires>
                2012-11-30T11:38:13z
            </wsu:Expires>
        </wsu:Timestamp>
        <wsse:Security soap:mustUnderstand="1" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">
            <wsse:UsernameToken 
            wsu:Id="SecurityToken-00c26e1a-3b3b-400f-a99a-3aa54cf8c8ff" 
                xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
            <wsse:Username>username</wsse:Username>
            <wsse:Password Type="wsse:PasswordText">password</wsse:Password>
            <wsse:Nonce>NBzqolcwIZrAOYw1vLyucDM3sQQ=</wsse:Nonce>
            <wsu:Created>2012-11-30T10:38:13z</wsu:Created>
            </wsse:UsernameToken>
       </wsse:Security>
    </soap:Header>
    <soap:Body>
        <MethodName xmlns="http://abcd.com/Webservices">
            <ValueField>Ford</ValueField>
        </MethodName>
    </soap:Body>
</soap:Envelope>

コンパイラが「:」に不満を持っている理由を理解するのに苦労しています。これを行うためのより良い方法はありますか/私はここで何を間違っていますか?

4

1 に答える 1

0

入力ありがとうございます。参考までに、私にとって有効な解決策は、文字列の前に「@」記号を付けることでした。二重引用符に\ "エスケープシーケンスを使用する代わりに、" "(つまり、エスケープシーケンスの場合は常に2セットの二重引用符)を使用しました。必要になります)-御馳走を動作します。

于 2012-12-03T14:42:07.717 に答える