2015-04-02 1 views
0

У меня есть файл XML, который был экспортирован из Orchard CMS. Теперь мне нужно преобразовать узлы в XML-файл в новую структуру, чтобы Я могу импортировать файл в Umbraco.Прочтите XML-файл, измените его и сохраните в виде нового форматированного XML.

Как мне это сделать? Я думаю, что я мог бы написать C# .net, чтобы прочитать XML-файл, а затем внести необходимые изменения, а затем - новый файл.

Пример того, что я пытаюсь сделать, это:

экспортированный файл:

<BlogPost Id="/alias=The Blog\/2012\/09\/10\/on-starters-orders" Status="Published"> 
    <TextField.Excerpt /> 
    <TaxonomyField.Categories Terms="" /> 
    <TaxonomyField.Tags Terms="" /> 
    <BodyPart Text="MAIN CONTENT OF THE BLOG POST" 
    /> 
    <CommonPart Owner="/User.UserName=Owain" Container="/alias=blog" CreatedUtc="2012-09-10T13:27:00Z" PublishedUtc="2012-09-25T08:57:25Z" ModifiedUtc="2012-09-25T08:56:15Z" /> 
    <AutoroutePart Alias="The Blog/2012/09/10/on-starters-orders" UseCustomPattern="false" /> 
    <TitlePart Title="On starters orders....." /> 
    <CommentsPart CommentsShown="true" CommentsActive="true" ThreadedComments="false" /> 
    <TagsPart Tags="" /> 
</BlogPost> 

Что мне нужно, чтобы преобразовать его в это:

<posts> 
    <post id="1" date-created="2012-09-25T08:57:25Z" date-modified="2012-09-25T08:56:15Z" approved="true" post-url="on-starters-orders" type="normal" hasexcerpt="false" views="0" is-published="True"> 
     <title type="text"><![CDATA[On starters orders.....]]></title> 
     <content type="text"><![CDATA[MAIN CONTENT OF THE BLOG POST]]> 
</content> 
    <post-name type="text"><![CDATA[On starters orders.....]]></post-name> 
    <categories> 
     <category ref="1018" /> 
     </categories> 
     <tags> 
     <tag ref="training" /> 
     </tags> 
     <comments> 
     <comment id="35" date-created="2006-09-05T11:36:50" date-modified="2006-09-05T11:36:50" approved="false" user-name="Phil Haack" user-url="http://haacked.com"> 
      <title type="text"><![CDATA[re: CS Dev Guide: Send Emails]]></title> 
      <content type="text"><![CDATA[Another test comment.]]></content> 
     </comment> 
     </comments> 
     <authors> 
     <author ref="Owain" /> 
     </authors> 
    </post> 

Ищете предложение на лучший способ сделать это, поскольку у меня есть 150 + сообщений для конвертирования и не нужно делать это вручную.

+0

Его определенно можно сделать. Есть много читателей xml. Один пример - http://stackoverflow.com/questions/20005211/cannot-deserialize-xml-string-with-newtonsoft-json-jsonconvert-deserializeobject –

+0

Используйте ['xsd.exe'] (https://msdn.microsoft. com/en-us/library/x6c1kb0s% 28v = vs.110% 29.aspx) для определения классов для старого и нового XML, затем используйте ['XmlSerializer'] (https://msdn.microsoft.com/en- us/library/system.xml.serialization.xmlserializer% 28v = vs.110% 29.aspx) для загрузки старого XML, напишите код C# для сопоставления между ними, затем снова используйте 'XmlSerializer' для записи новых классов. – dbc

+0

Или используйте Linq-to-XML, чтобы [изменить ваш XML в памяти напрямую] (https://msdn.microsoft.com/en-us/library/bb387084.aspx). – dbc

ответ

0

Вы можете использовать преобразование XSLT, которое имеет множество возможностей для выполнения того, что вы ищете. XSLT может выводиться в xml.

Смежные вопросы