[英]How would be the xml to satisfy c# condition?
我不太了解xml。 我有一个项目,其代码如下:
XmlNodeList signature = script.GetElementsByTagName("signature", "http://www.w3.org/2000/09/xmldsig#");
if (signature != null)
{
if (signature.Count > 0)
{
return true;
}
}
return false;
我无法获取xml代码来满足给定条件以从代码return true
。
到目前为止,我已经尝试过了,但这是不正确的。
<signature xmlns="http://www.w3.org/2000/09/xmldsig#">
test
</signature>
任何人都可以让我知道如何创建一个满足给定条件的xml,以使签名count > 0
吗?
当我尝试使用script.GetElementsByTagName("signature")
时, count is 1
。 那么,为什么它不能与GetElementsByTagName(string,string)
方法一起使用?
并且请帮助我了解GetElementsBytagName
函数GetElementsBytagName
工作? 提前致谢。
我根据您的源代码进行了尝试,并且可以正常工作。 可能您的脚本变量未正确初始化?
XmlDocument script = new XmlDocument();
script.LoadXml("<signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\">test</signature>");
XmlNodeList signature = script.GetElementsByTagName("signature", "http://www.w3.org/2000/09/xmldsig#");
我根据您的代码进行了尝试,对我有用。
var script = new XmlDocument();
script.LoadXml("<signature>test</signature>");
var elements = script.GetElementsByTagName("signature");
Console.WriteLine(elements.Count);
for (int i = 0; i < elements.Count; i++)
{
Console.WriteLine(elements[i].InnerXml);
}
链接到小提琴 。 您的脚本变量是否包含任何元素?
getElementsByTagName返回其标记名与传递的值匹配的xmlNode列表,例如,要获取所有具有标记名test的节点,可以使用函数GetElementsByTagName(“ test”)。
您可以针对以下xml进行测试
<?xml version="1.0" encoding="utf-8" ?>
<Document>
<signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<TestSign></TestSign>
</signature>
<signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<TestSign></TestSign>
</signature>
<signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<TestSign></TestSign>
</signature>
</Document>
阅读注释后,如果您的计数器返回0,并且脚本对象是XmlDocument,那么问题显然是xml的LOAD ...请检查一下,它对我有用:
var script = new XmlDocument();
script.LoadXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?><signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\">test</signature>");
XmlNodeList signature = script.GetElementsByTagName("signature", "http://www.w3.org/2000/09/xmldsig#");
if (signature != null)
{
if (signature.Count > 0)
{
return true;
}
}
return false;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.