【问题标题】:HttpPostedFile (XML) contents to List<T> C#HttpPostedFile (XML) 内容到 List<T> C#
【发布时间】:2016-05-20 10:46:55
【问题描述】:

我有一个使用 Linq 创建的 XML 文件,现在我希望能够将其导入回我的 Umbraco 测试站点。我在网上尝试了很多建议,但首先是我的课程示例:

pastebin example of Import Class

在这个类中,我使用的是 XmlDeserialize 方法,但是因为我的文件是用 Linq 创建的(我想这是原因,我可能是错的),我收到以下错误:

{"There is an error in XML document (1, 2)."}

进一步查看错误,我发现问题出在哪里:

{"&lt;BlogPosts xmlns=''&gt; was not expected."}

我相信这是因为我使用 Linq here 编写文件的方式

您可以看到我在创建文件时没有设置命名空间。

我的问题是,当我尝试使用 Linq 方法时,我并没有走得更远,但我得到了不同的错误。

这是我尝试过的方法以及我得到的错误:

string myFileNew = myFile.ToString();
XDocument doc = XDocument.Parse(myFileNew);
List<BlogPosts> blogPosts = doc.Descendants("Field").ToList();

错误:

CS0029: Cannot implicitly convert type 'System.Collections.Generic.List<System.Xml.Linq.XElement>' to 'System.Collections.Generic.List<UmbracoBlogsExportPackage.Models.BlogPosts>'

接下来我尝试的是这样的:

string myFileNew = myFile.ToString();
XDocument xdoc1 = XDocument.Load(myFileNew);
                BlogPosts objBlogPosts = new BlogPosts();
                List<BlogPosts> lstblogs
                    = (from _blog in xdoc1.Element("BlogPosts").Elements("blog")
                       select new BlogPosts
                       {
                           Title = _blog.Element("Title").Value,
                           BodyText = _blog.Element("BodyText").Value,
                           PublishDate = _blog.Element("PublishDate").Value,
                           Author = _blog.Element("Author").Value
                       }).ToList();

我收到此错误:

{"Could not find file 'C:\\Program Files (x86)\\IIS Express\\System.Web.HttpPostedFileWrapper'.":"C:\\Program Files (x86)\\IIS Express\\System.Web.HttpPostedFileWrapper"}

所以我开始尝试这个:

 string myFileNew = myFile.ToString();
 XElement xmlDoc = XElement.Load(myFileNew
                var blogPosts = xmlDoc.Descendants("BlogPosts").Select(Blog => new BlogPosts
                {
                    Title = Blog.Element("Title").Value,
                    BodyText = Blog.Element("BodyText").Value,
                    PublishDate = BlogElement("PublishDate").Value,
                    Author = Blog.Element("Author").Value

                }));
                blogPosts.ToList();

我得到了这个错误:

CS1026: ) expected

在线:XElement xmlDoc = XElement.Load(myFileNew

哦,这也是我的模型类: pastebin link

我要问的是,谁能给我指出我应该做什么的正确方向?因为我已经用尽了我在网上可以找到的所有可能性,而且我显然做错了什么。

我的Export Class 返回此 Xml 文件

<BlogPosts>
  <Blog>
    <Title>یہ ایک بلاگ پوسٹ ہے</Title>
    <BodyText>&lt;p&gt;یہ کچھ بے ترتیب بلاگ مواد ہے&lt;/p&gt;
&lt;p&gt;یہ کچھ بے ترتیب بلاگ مواد ہے&lt;/p&gt;
&lt;p&gt;یہ کچھ بے ترتیب بلاگ مواد ہےیہ کچھ بے ترتیب بلاگ مواد ہےیہ کچھ بے ترتیب بلاگ مواد ہے&lt;/p&gt;
&lt;p&gt;یہ کچھ بے ترتیب بلاگ مواد ہے&lt;/p&gt;
&lt;p&gt;یہ کچھ بے ترتیب بلاگ مواد ہےیہ کچھ بے ترتیب بلاگ مواد ہے&lt;/p&gt;
&lt;p&gt;یہ کچھ بے ترتیب بلاگ مواد ہے&lt;/p&gt;</BodyText>
    <PublishDate>29/09/2016 15:49:47</PublishDate>
    <Author>0</Author>
    <Image>/media/1006/6882554979_e7386292ce_b.jpg</Image>
    <Comments />
  </Blog>
  <Blog>
    <Title>זהו פוסט בבלוג</Title>
    <BodyText>&lt;p&gt;זהו חלק מתכני בלוג אקראיים!&lt;/p&gt;</BodyText>
    <PublishDate>17/03/2017 14:20:03</PublishDate>
    <Author>0</Author>
    <Image>/media/1001/black-snow.jpg</Image>
    <Comments />
  </Blog>
  <Blog>
    <Title>وهذا هو بلوق وظيفة جديدة</Title>
    <BodyText>&lt;p&gt;هذه هي بعض محتوى بلوق جديد&lt;/p&gt;
&lt;p&gt;هذه هي بعض محتوى بلوق جديد&lt;/p&gt;
&lt;p&gt;هذه هي بعض محتوى بلوق جديدهذه هي بعض محتوى بلوق جديدهذه هي بعض محتوى بلوق جديدهذه هي بعض محتوى بلوق جديدهذه هي بعض محتوى بلوق جديدهذه هي بعض محتوى بلوق جديد&lt;/p&gt;
&lt;p&gt;هذه هي بعض محتوى بلوق جديد&lt;/p&gt;
&lt;p&gt;هذه هي بعض محتوى بلوق جديدهذه هي بعض محتوى بلوق جديد&lt;/p&gt;
&lt;p&gt;هذه هي بعض محتوى بلوق جديد&lt;/p&gt;</BodyText>
    <PublishDate>12/05/2016 14:57:45</PublishDate>
    <Author>0</Author>
    <Image>/media/1005/6882554979_e7386292ce_b.jpg</Image>
    <Comments />
  </Blog>
  <Blog>
    <Title>The 10 remarkable features of object</Title>
    <BodyText>&lt;p&gt;Ita prorsus, inquam; Hanc ergo intuens debet institutum illud quasi signum absolvere. Ergo adhuc, quantum equidem intellego, causa non videtur fuisse mutandi nominis. Quia dolori non voluptas contraria est, sed doloris privatio. Nos autem non solum beatae vitae istam esse oblectationem videmus, sed etiam levamentum miseriarum. Quodsi ipsam honestatem undique pertectam atque absolutam. Nos cum te, M. Quod vestri non item.&lt;/p&gt;
&lt;p&gt;Cum id quoque, ut cupiebat, audivisset, evelli iussit eam, qua erat transfixus, hastam. Quarum ambarum rerum cum medicinam pollicetur, luxuriae licentiam pollicetur. Quid iudicant sensus? Quo tandem modo?&lt;/p&gt;</BodyText>
    <PublishDate>12/05/2016 14:35:45</PublishDate>
    <Author>0</Author>
    <Image>/media/1002/black-snow.jpg</Image>
    <Comments />
  </Blog>
  <Blog>
    <Title>You really need to read this!</Title>
    <BodyText>&lt;p&gt;&lt;span&gt;Ut aliquid scire se gaudeant? Hanc ergo intuens debet institutum illud quasi signum absolvere. Vestri haec verecundius, illi fortasse constantius. Itaque sensibus rationem adiunxit et ratione effecta sensus non reliquit. Sed ea mala virtuti magnitudine obruebantur. Quasi ego id curem, quid ille aiat aut neget. Verum tamen cum de rebus grandioribus dicas, ipsae res verba rapiunt; Apparet statim, quae sint officia, quae actiones.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;Virtutibus igitur rectissime mihi videris et ad consuetudinem nostrae orationis vitia posuisse contraria. Nonne videmus quanta perturbatio rerum omnium consequatur, quanta confusio? Sed eum qui audiebant, quoad poterant, defendebant sententiam suam. Ut necesse sit omnium rerum, quae natura vigeant, similem esse finem, non eundem.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</BodyText>
    <PublishDate>12/05/2016 14:36:00</PublishDate>
    <Author>0</Author>
    <Image>/media/1004/6882554979_e7386292ce_b.jpg</Image>
    <Comments />
  </Blog>
  <Blog>
    <Title>This is a wonderful news item</Title>
    <BodyText>&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Commoda autem et incommoda in eo genere sunt, quae praeposita et reiecta diximus; Bestiarum vero nullum iudicium puto. Est enim effectrix multarum et magnarum voluptatum. Duo Reges: constructio interrete. Claudii libidini, qui tum erat summo ne imperio, dederetur. Quarum ambarum rerum cum medicinam pollicetur, luxuriae licentiam pollicetur. Sed virtutem ipsam inchoavit, nihil amplius.&lt;/p&gt;
&lt;p&gt;Ita redarguitur ipse a sese, convincunturque scripta eius probitate ipsius ac moribus. Istam voluptatem, inquit, Epicurus ignorat? Sed venio ad inconstantiae crimen, ne saepius dicas me aberrare; Sic, et quidem diligentius saepiusque ista loquemur inter nos agemusque communiter. Primum in nostrane potestate est, quid meminerimus? Consequens enim est et post oritur, ut dixi. Hoc mihi cum tuo fratre convenit. Immo videri fortasse. Itaque in rebus minime obscuris non multus est apud eos disserendi labor. Aliud igitur esse censet gaudere, aliud non dolere.&lt;/p&gt;</BodyText>
    <PublishDate>12/05/2016 14:35:54</PublishDate>
    <Author>0</Author>
    <Image>/media/1003/black-snow.jpg</Image>
    <Comments />
  </Blog>
  <Blog>
    <Title>Txt Starter Kit For Umbraco Released</Title>
    <BodyText>&lt;p&gt;&lt;span&gt;Sed ad haec, nisi molestum est, habeo quae velim. Neque enim disputari sine reprehensione nec cum iracundia aut pertinacia recte disputari potest. Nec vero alia sunt quaerenda contra Carneadeam illam sententiam. Deinde disputat, quod cuiusque generis animantium statui deceat extremum. Facit igitur Lucius noster prudenter, qui audire de summo bono potissimum velit; Quis non odit sordidos, vanos, leves, futtiles?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;Negat enim summo bono afferre incrementum diem. Haec mihi videtur delicatior, ut ita dicam, molliorque ratio, quam virtutis vis gravitasque postulat. Haec quo modo conveniant, non sane intellego. Quis enim confidit semper sibi illud stabile et firmum permansurum, quod fragile et caducum sit? Multoque hoc melius nos veriusque quam Stoici. Igitur neque stultorum quisquam beatus neque sapientium non beatus. De hominibus dici non necesse est. Non enim iam stirpis bonum quaeret, sed animalis. Nobis Heracleotes ille Dionysius flagitiose descivisse videtur a Stoicis propter oculorum dolorem. At, illa, ut vobis placet, partem quandam tuetur, reliquam deserit.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</BodyText>
    <PublishDate>20/09/2021 00:00:00</PublishDate>
    <Author>0</Author>
    <Image>/media/SampleImages/1077/pic05.jpg</Image>
    <Comments />
  </Blog>
</BlogPosts>

请注意

我不是要你调试我的整个项目,因为导出控制器工作正常,我只需要指出正确的导入方向,我不确定我做错了什么,因为这些都是我上网的示例代码,我将其上下文化以适合我的项目

包含的所有 pastebin 链接都是为了让您了解所有数据从哪里提取和推送到哪里。

【问题讨论】:

    标签: c# .net xml asp.net-mvc linq


    【解决方案1】:

    myFileHttpPostedFileBase,在其上调用 ToString() 不会产生任何价值。

    你可以这样做:

    var file = myContext.Result.Request.Files["file"];
    
    var xdocument = XDocument.Load(file.InputStream);
    

    然后继续您的基于 XLINQ 的解析逻辑。

    【讨论】:

    • 也许你的意思是:var xdocument = XDocument.Load(file.InputStream);
    • @har07 准点!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-10-16
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    相关资源
    最近更新 更多