2016-04-05 16 views
-1

以下のXMLを、C#コードの背後にあるjsonに解析する必要があります。XMLデータをJSONに変換する

<rss version="2.0"> 
<channel> 
<title>TITLE </title> 
<link>http://sample.com/</link> 
<language>en-Us</language> 
<pubDate>System.String[] GMT</pubDate> 
<item> 
<ParentSection>News</ParentSection> 
<ParentSectionTamilname>செய்திகள்</ParentSectionTamilname> 
<ParentSectionID>1</ParentSectionID> 
<Count>6</Count> 
<items> 
<Section>National</Section> 
<Sectiontamil>தேசியச்செய்திகள்</Sectiontamil> 
<Sectionid>3</Sectionid> 
<SectionURL> 
http://sample.com/rss/RssfeedXML.aspx?Id=3&Main=1 
</SectionURL> 
<SectionJsonURL> 
http://sample.com/json/JsonfeedXML.aspx?Id=3&Main=1 
</SectionJsonURL> 
<subitem> 
<Sub_Count>0</Sub_Count> 
</subitem> 
</items> 
<items> 
<Section>National</Section> 
<Sectiontamil>தேசியச்செய்திகள்</Sectiontamil> 
<Sectionid>3</Sectionid> 
<SectionURL> 
http://sample.com/rss/RssfeedXML.aspx?Id=3&Main=1 
</SectionURL> 
<SectionJsonURL> 
http://sample.com/json/JsonfeedXML.aspx?Id=3&Main=1 
</SectionJsonURL> 
<subitem> 
<Sub_Count>0</Sub_Count> 
</subitem> 
</items> 
</item> 

<item> 
<ParentSection>News</ParentSection> 
<ParentSectionTamilname>செய்திகள்</ParentSectionTamilname> 
<ParentSectionID>1</ParentSectionID> 
<Count>6</Count> 
<items> 
<Section>National</Section> 
<Sectiontamil>தேசியச்செய்திகள்</Sectiontamil> 
<Sectionid>3</Sectionid> 
<SectionURL> 
http://sample.com/rss/RssfeedXML.aspx?Id=3&Main=1 
</SectionURL> 
<SectionJsonURL> 
http://sample.com/json/JsonfeedXML.aspx?Id=3&Main=1 
</SectionJsonURL> 
<subitem> 
<Sub_Count>0</Sub_Count> 
</subitem> 
</items> 
<items> 
<Section>National</Section> 
<Sectiontamil>தேசியச்செய்திகள்</Sectiontamil> 
<Sectionid>3</Sectionid> 
<SectionURL> 
http://sample.com/rss/RssfeedXML.aspx?Id=3&Main=1 
</SectionURL> 
<SectionJsonURL> 
http://sample.com/json/JsonfeedXML.aspx?Id=3&Main=1 
</SectionJsonURL> 
<subitem> 
<Sub_Count>0</Sub_Count> 
</subitem> 
</items> 
</item> 
</channel> 
</rss> 

以下はXMLをJSONに変換するために使用したC#コードですが、失敗します。私はSerializeObjectを使用してシリアル化できません。

var xml = new XmlDocument(); 
       xml.LoadXml(ABOVE XMLSTRING); 
       string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(xml, Newtonsoft.Json.Formatting.None); 

この上の任意のヘルプは非常に高く評価されるだろう。..

ありがとうございました。

+1

私はこのJsonシリアライザを知らないのですが、そこに 'XmlDocument'インスタンスを直接置くことはできないと思います!プロパティと値を入力として持つ具体的なクラスインスタンスが必要になっているように見えます。 –

+0

あなたのお待ちいただきありがとうございます – Anbarasi

+1

JsonConvert.SerializeXmlNode(xml) – Kevin

答えて

4

あなたはXML標準に従ってあなたのXML文字列をフォーマットする必要があります。あなたがオブジェクトをシリアル化しませSerializeXmlNodeメソッドを呼び出す必要が

<?xml version="1.0" encoding="utf-8" ?> 
<rss version="2.0"> 
    <channel> 
    <title>TITLE </title> 
    <link>http://sample.com/</link> 
    <language>en-Us</language> 
    <pubDate>System.String[] GMT</pubDate> 
    <item> 
     <ParentSection>News</ParentSection> 
     <ParentSectionTamilname>செய்திகள்</ParentSectionTamilname> 
     <ParentSectionID>1</ParentSectionID> 
     <Count>6</Count> 
     <items> 
      <Section>National</Section> 
      <Sectiontamil>தேசியச்செய்திகள்</Sectiontamil> 
      <Sectionid>3</Sectionid> 
      <SectionURL> 
       http://sample.com/rss/RssfeedXML.aspx?Id=3&amp;Main=1 
      </SectionURL> 
      <SectionJsonURL> 
       http://sample.com/json/JsonfeedXML.aspx?Id=3&amp;Main=1 
      </SectionJsonURL> 
      <subitem> 
       <Sub_Count>0</Sub_Count> 
      </subitem> 
     </items> 
     <items> 
      <Section>National</Section> 
      <Sectiontamil>தேசியச்செய்திகள்</Sectiontamil> 
      <Sectionid>3</Sectionid> 
      <SectionURL> 
       http://sample.com/rss/RssfeedXML.aspx?Id=3&amp;Main=1 
      </SectionURL> 
      <SectionJsonURL> 
       http://sample.com/json/JsonfeedXML.aspx?Id=3&amp;Main=1 
      </SectionJsonURL> 
      <subitem> 
       <Sub_Count>0</Sub_Count> 
      </subitem> 
     </items> 
    </item> 

    <item> 
     <ParentSection>News</ParentSection> 
     <ParentSectionTamilname>செய்திகள்</ParentSectionTamilname> 
     <ParentSectionID>1</ParentSectionID> 
     <Count>6</Count> 
     <items> 
      <Section>National</Section> 
      <Sectiontamil>தேசியச்செய்திகள்</Sectiontamil> 
      <Sectionid>3</Sectionid> 
      <SectionURL> 
       http://sample.com/rss/RssfeedXML.aspx?Id=3&amp;Main=1 
      </SectionURL> 
      <SectionJsonURL> 
       http://sample.com/json/JsonfeedXML.aspx?Id=3&amp;Main=1 
      </SectionJsonURL> 
      <subitem> 
       <Sub_Count>0</Sub_Count> 
      </subitem> 
     </items> 
     <items> 
      <Section>National</Section> 
      <Sectiontamil>தேசியச்செய்திகள்</Sectiontamil> 
      <Sectionid>3</Sectionid> 
      <SectionURL> 
       http://sample.com/rss/RssfeedXML.aspx?Id=3&amp;Main=1 
      </SectionURL> 
      <SectionJsonURL> 
       http://sample.com/json/JsonfeedXML.aspx?Id=3&amp;Main=1 
      </SectionJsonURL> 
      <subitem> 
       <Sub_Count>0</Sub_Count> 
      </subitem> 
     </items> 
    </item> 
</channel> 

の下

&amp; // Use instead of & 

フォーマットされたXML文字列です。 SerializeObjectは、xmlをc#instanceに変換するために使用されます。

ここではコードが不器用になり、文字列としてファイルではなく、ハードコードからファイルおよび負荷であなたのXMLを保存することをお勧めしnewtonsoft

XmlDocument xmlDoc = new XmlDocument(); 
    xmlDoc.Load("InputXml.xml"); // Can use xmlDoc.LoadXml(YourString); 
    string jsonText = JsonConvert.SerializeXmlNode(xmlDoc); 

を使用してJSONにXMLをシリアル化するためのコードです。

1

まずxmlを修正する必要があります。それを解析することはできません。 VSを使用してエラーを特定します。また、修正する必要があるURLアドレスの特殊文字もあります。

4

あなたはJSONにXMLをシリアル化する代わりにJsonConvert.SerializeXmlNode()を使用している必要があります。

var xml = new XmlDocument(); 
xml.LoadXml("your XML here"); 
string jsonString = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xml); 
関連する問題