【发布时间】:2015-03-05 00:33:34
【问题描述】:
我正在尝试从 XML 文件中的图像标记中获取图像。 Image 元素被传递给这个函数:
private Image GetImage(XElement element)
{
var image = new Image();
var elemString = (String)element;
if (String.IsNullOrEmpty(elemString))
{
return image;
}
XElement imageElement = element.Element("img");
if (imageElement != null)
{
image.Url = (String)imageElement.Attribute("src");
}
return image;
}
我需要让它检查元素是否为空,这样我就不会尝试在空字符串上获取 element.Element("img") 并得到错误。但是,我的 all 元素都返回空; (String)element 返回为 "" 即使我的元素不为空。
例如,我的一个元素对象如下所示:
<Image>
<img src="/assets/0/206/207/76aa1e77-4d7f-474e-9b94-3250a60b887a.jpg?n=673" alt="jackerman" />
</Image>
但是 (String)element = "";
链接也发生了同样的事情,有效链接上的 (String) 元素返回为空字符串。
private Link GetLink(XElement element)
{
var link = new Link();
if (String.IsNullOrEmpty((String)element))
{
return link;
}
XElement anchorElement = element.Element("a");
if (anchorElement != null)
{
link.Url = (String)anchorElement.Attribute("href");
link.Text = (String)anchorElement;
}
return link;
}
为什么(字符串)元素返回空,如果这不起作用,我如何检查“元素”是否为空/空?
【问题讨论】:
-
你不需要 (string)element.Element("img");
-
老实说,我很惊讶您在尝试“(字符串)元素”时没有遇到异常。
-
尝试使用 XElement 类的函数。
-
XElement 有一个显式转换为字符串,它返回所有子元素的所有文本,而不是子元素本身。 msdn.microsoft.com/en-us/library/bb155263(v=vs.110).aspx
-
哦,感谢更新 juharr。我没有意识到这一点。