2017-05-25 6 views
0

DbContextを作成していますが、データベースにXMLを格納できません。 xmlを文字列に解析し、文字列プロパティとしてモデルに保存する以外の方法はありますか?Entity Framework - XMLをデータベースに格納する方法

私は、以下のXMLとしての私のニュースを保存したいと思います:として

<News> 
    <Language value="en-GB"> 
    <Title>Example One</Title> 
    <Date>25/05/2017 12:12:12</Date> 
    <Content>Simple <b>HTML</b> content!</Content> 
    <Miniature> 
     <File ID="816c9bcc-a9fc-4390-9bdc-52c8a0ae75be"> 
     <Title>File 1</Title> 
     <Extension>JPG</Extension> 
     <Path>Server path</Path> 
     <Thumbnail>Server path to thumbnail</Thumbnail> 
     </File> 
    </Miniature> 
    <Images> 
     <File ID="bd4c6a21-243f-44cb-9456-7dd596d7ed9f"> 
     <Title>File 2</Title> 
     <Extension>JPG</Extension> 
     <Path>Server path</Path> 
     <Thumbnail>Server path to thumbnail</Thumbnail> 
     </File> 
     <File ID="50d4966c-9381-4d28-b289-8a0a8a29433b"> 
     <Title>File 3</Title> 
     <Extension>PNG</Extension> 
     <Path>Server path</Path> 
     <Thumbnail>Server path to thumbnail</Thumbnail> 
     </File> 
    </Images> 
    </Language> 
    <Language value="en-US"> 
    <Title>Example One</Title> 
    <Date>25/05/2017 12:12:12</Date> 
    <Content> 
     Simple <i>UNITED STATES</i> <b>HTML</b> content! 
    </Content> 
    <Miniature> 
     <File ID="816c9bcc-a9fc-4390-9bdc-52c8a0ae75be"> 
     <Title>File 4</Title> 
     <Extension>JPG</Extension> 
     <Path>Server path</Path> 
     <Thumbnail>Server path to thumbnail</Thumbnail> 
     </File> 
    </Miniature> 
    <Images> 
     <File ID="bd4c6a21-243f-44cb-9456-7dd596d7ed9f"> 
     <Title>File 2</Title> 
     <Extension>JPG</Extension> 
     <Path>Server path</Path> 
     <Thumbnail>Server path to thumbnail</Thumbnail> 
     </File> 
    </Images> 
    </Language> 
</News> 

そして、私のファイル:

<File> 
    <Title>File 2</Title> 
    <Extension>JPG</Extension> 
    <Path>Server path</Path> 
    <Thumbnail>Server path to thumbnail</Thumbnail> 
</File> 

私は単にこれを行うことができますし、CRUD操作をしながら単なる文字列にXMLを解析し、詳細に保存してください:

public class News 
{ 
    public Guid ID {get;set;} 
    public string Details {get;set;} 
} 

これを行う方法はありますか?シリアル化属性などを使用しているのと同じですか?それをどうすれば実現できますか?

ありがとうございます!

+0

シリアル化は、XMLオブジェクトを文字列に解析することと同じです。 –

+0

しかし、どのように私のニュースクラスとモデルのようになりますか? – Ashiv3r

+0

あなたのxml dtdと同じですか? –

答えて

0

代わりにLINQ to XMLを使用してください。

XDocument fileXml = XDocument.Load(path); 
var files = from files in fileXml.Descendants("File") 
select new { 
    Title = file.Attribute("Title").Value, 
    Extension = file.Element("Extension").Value, 
    Path = file.Element("Path").Value, 
    Thumbnail = file.Element("Thumbnail").Value 
}; 

foreach (var file in files) 
{ 
    // Do other operations with each student object 
} 
+0

私はXMLファイルを操作する方法を知っていますが、XMLファイルとしてサーバーに保管するのではなく、データベースのXML列として保管します。 – Ashiv3r

+0

「私はサーバーにXMLファイルとして保存するのではなく、データベースのXML列として保存します」という意味はどうですか? – Fahadsk

+0

答えはxmlファイルをパスから読み取ることです。私はこれをしたくない、私はデータベースからそれを読んでみたい。 SQLでは、XML型の列を持つことができます。 Entity FrameworkにXML列として格納する方法は? – Ashiv3r

関連する問題