【问题标题】:Parsing xml string and get rid of root element error解析 xml 字符串并摆脱根元素错误
【发布时间】:2017-01-17 15:21:45
【问题描述】:

我将此字符串结构化为 XML:

<damp fullmedia="">
  <mediaitem>
    <img id="1119" version="29a5623f-d41c-4418-97b7-3cea8579ffd8" parentid="1052" level="2" writerid="0" nodetype="1032" template="0" sortorder="2" createdate="2016-11-30T10:09:40" updatedate="2016-11-30T10:09:40" nodename="2016-11-25_1251411957-277" urlname="2016-11-25_1251411957-277" writername="admin" nodetypealias="Image" path="-1,1052,1119">
      <umbracofile>/media/1013/2016-11-25_1251411957-277.jpg</umbracofile>
      <umbracowidth>2598</umbracowidth>
      <umbracoheight>1732</umbracoheight>
      <umbracobytes>350613</umbracobytes>
      <umbracoextension>jpg</umbracoextension>    
    </img>
  </mediaitem>
</damp>

我想提取属性“umbracofile”的值,所以我这样做了:

var stringAsXml = "<damp fullmedia="">....";
var xmlDoc = new XmlDocument();
var imageUrl = xmlDoc.SelectSingleNode("//mediaItem/img/umbracoFile").InnerText;

代码运行良好,但出现错误“缺少根元素”。由于我只想解析和提取一个节点值,我该如何摆脱这个错误?

【问题讨论】:

  • The code works fine but I have the error 我认为这些陈述实际上是矛盾的。错误可能与您正在寻找节点 Image 的事实有关,而该节点实际上是 img
  • 对不起,我的错误,节点找到/img/不是/Image/
  • 哦,你的img 标签也永远不会关闭。不知道是不是笔误
  • 这是一个错字,我改正了,对不起!

标签: c# xml xml-parsing umbraco


【解决方案1】:

代码运行良好,但出现错误“缺少根元素”。

那么我猜代码不能正常工作?这应该有效:

var stringAsXml = "<damp fullmedia=\"\"><mediaitem><img id=\"1119\" version=\"29a5623f-d41c-4418-97b7-3cea8579ffd8\" parentid=\"1052\" level=\"2\" writerid=\"0\" nodetype=\"1032\" template=\"0\" sortorder=\"2\" createdate=\"2016-11-30T10:09:40\" updatedate=\"2016-11-30T10:09:40\" nodename=\"2016-11-25_1251411957-277\" urlname=\"2016-11-25_1251411957-277\" writername=\"admin\" nodetypealias=\"Image\" path=\"-1,1052,1119\"><umbracofile>/media/1013/2016-11-25_1251411957-277.jpg</umbracofile><umbracowidth>2598</umbracowidth><umbracoheight>1732</umbracoheight><umbracobytes>350613</umbracobytes><umbracoextension>jpg</umbracoextension></img></mediaitem></damp>";
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(stringAsXml);
var imageUrl = xmlDoc.SelectSingleNode("damp/mediaitem/img/umbracofile").InnerText;

还有这个(如果您有多个&lt;umbracofile&gt; 节点并且想要选择第一个):

var imageUrl = xmlDoc.SelectSingleNode("//umbracofile").InnerText;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2017-08-03
    相关资源
    最近更新 更多