我正在尝试从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”)并获得错误。但是,所有我的元素都返回空; (String)元素返回为“”,即使我的元素不为空。
例如,我的一个元素对象如下所示:
<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'是否为空/空?
答案 0 :(得分:2)
如果string
返回null,则不需要强制转换为Element
,这足以确定子元素是否存在。
private Image GetImage(XElement element)
{
var image = new Image();
XElement imageElement = element.Element("img");
if (imageElement != null)
{
image.Url = (String)imageElement.Attribute("src");
}
return image;
}
转换为string
为空的原因是因为它将返回元素和元素后代的连接文本,但是您的元素及其后代不包含任何文本。请参阅string
here的明确XElement
广告的文档。