1

Datacontract クラスで Atom フィードを使用する XML をキャストしようとしていますが、失敗しています....

私のコードは次のとおりです。

Content.ReadAsAsync<ArticleDTOs>()

      [Serializable]
 [DataContract(Namespace = "urn:schemas-something:some", Name = "document")]
    public class ArticleDTOs  
    {

        [DataMember(Name = "entry")]
        public entry entry { get; set; }

        }

    [Serializable]
    [DataContract(Namespace ="http://www.w3.org/2005/Atom")]
    public class entry
    {
    [DataMember(Name = "id")]
        public string id { get; set; }

     }
}

問題は名前空間宣言に関連していると感じています

datacontract .... XML名前空間を正しく読み取るように名前空間を設定するにはどうすればよいですか???

これは、デシリアライズする必要がある XML です

<?xml version="1.0" encoding="utf-8"?>

<document id="m.fy7c2fsvzxtv" xmlns:atom="http://www.w3.org/2005/Atom" xmlns="urn:schemas-something:some">

<atom:entry><atom:id>m.fy7c2fsvzxtv</atom:id><atom:title>test title</atom:title><atom:published>2013-07-08T17:21:06.4035574+01:00</atom:published><atom:updated>2013-07-08T17:21:06.4050577+01:00</atom:updated><subheadline>test sub headline</subheadline><standfirst>desc</standfirst><keywords>keywords</keywords>

<atom:content>body with Encoding </atom:content></atom:entry></document>
4

1 に答える 1

0

コメントするのに十分な評判がありません。そうでなければ、コメントで説明を求めていたでしょう...

逆シリアル化する必要がある XML の例に従って"、バージョン、エンコーディング、および id 属性で二重引用符 () がエスケープされます。示されているように、これは有効な XML ではありません。

XML は独自のプログラムの出力ですか? その場合は、文字をエスケープしている場所を見つけて、出力を書き込むときにエスケープしないようにします。

それが作業しなければならないファイルである場合は、二重引用符をエスケープするすべてのバックスラッシュを削除することをお勧めします。

// We have to escape the backslash and the quote both, with a backslash
xmlString.Replace("\\\#","\#");

おそらくそれはあなたの問題を解決しますか?

最後に、コードが「失敗している」とだけ言及し、いかなる種類の例外またはエラーメッセージも提供していません...上記の解決策が機能しない場合、コードがどのように失敗するかについて詳細を提供してください.

于 2013-07-09T21:56:53.567 に答える