C# 在显示之前检查空XML数据验证

C# 在显示之前检查空XML数据验证,c#,xml,xpath,C#,Xml,Xpath,我想在显示xml之前检查它。我使用的是XPath而不是xsl。例如 <title></title> <url></url> <submit></submit> 我想新的链接不应该来,如果网址是空的。。。 知道如何检查这个条件吗?使用XPath。假设元素包含在名为link的元素中: link[title != '' and url !=''] 将找到链接元素,这些元素的标题和url子元素不包含后代文本节点。为了让它更防弹

我想在显示xml之前检查它。我使用的是XPath而不是xsl。例如

<title></title>
<url></url>
<submit></submit>
我想新的链接不应该来,如果网址是空的。。。
知道如何检查这个条件吗?

使用XPath。假设元素包含在名为
link
的元素中:

link[title != '' and url !='']
将找到
链接
元素,这些元素的
标题
url
子元素不包含后代文本节点。为了让它更防弹

link[normalize-space(title) != '' and normalize-space(url) !='']

将阻止表达式匹配
链接
元素,这些元素的
标题
url
子元素包含空格。

如果您没有访问.cs文件的权限,则仍然可以将代码嵌入.ascx文件中。记住,您不必将所有代码都放在代码隐藏文件中,它可以直接内联到.ascx文件中

<% 
if(iterator.current.value!="") { 
%>
    <a href=<%#container.dataitem,url%>>new link</a>
<% 
}
%>

我见过使用asp:Literal控件处理此问题

在web表单中,您将拥有

在后面的代码中,您将:

protected string GetAnchorTag(object dataItem) {
  if(dataItem != null) {
    string url = Convert.ToString(DataBinder.Eval(dataItem, "url"));
    if(!string.IsNullOrEmpty(url)) {
      string anchor = /* build your anchor tag */
      return anchor;
    }
  }
  return string.Empty;
}
这样,您可以输出一个完整的锚标记或一个空字符串。我不知道这将如何与您的标题和提交节点相适应,但它解决了锚显示问题


就个人而言,我不喜欢这种方法,但我已经见过不少。

关于
///a[不是(./@href)还是不是(text()='')
我知道我可以找到类似的方法。在我的例子中,我是使用迭代器.current.value=“”找到它的或者不是,但我的问题是如何基于我的超链接。我的意思是,如果它是空的,则不显示链接,如果它不是空的,则显示链接。我的链接表达式在ascx文件中,正如我上面所解释的。我想Robert的建议是忽略所有没有指定url的节点。不清楚您如何使用标题和子标题麻省理工学院在你的帖子中。这对我来说很有效……我试过类似的方法,它的书写非常完美,再次感谢吉姆………-)
protected string GetAnchorTag(object dataItem) {
  if(dataItem != null) {
    string url = Convert.ToString(DataBinder.Eval(dataItem, "url"));
    if(!string.IsNullOrEmpty(url)) {
      string anchor = /* build your anchor tag */
      return anchor;
    }
  }
  return string.Empty;
}