xml将如何满足c条件
本文关键字:满足 条件 何满足 xml | 更新日期: 2023-09-27 17:59:40
我对xml了解不多。我得到了一个项目的代码如下:
XmlNodeList signature = script.GetElementsByTagName("signature", "http://www.w3.org/2000/09/xmldsig#");
if (signature != null)
{
if (signature.Count > 0)
{
return true;
}
}
return false;
我无法从代码中获得满足return true
给定条件的xml代码。
到目前为止我已经试过了,但不正确。
<signature xmlns="http://www.w3.org/2000/09/xmldsig#">
test
</signature>
有人能告诉我如何创建一个xml来满足给定的条件来获得签名count > 0
吗?
当我尝试使用script.GetElementsByTagName("signature")
时,在这种情况下是count is 1
。那么,为什么它不能使用GetElementsByTagName(string,string)
方法呢?
请帮助我理解函数GetElementsBytagName
是如何工作的?提前谢谢。
阅读注释后,如果计数器返回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;
我根据您的源代码进行了尝试,它工作起来没有任何问题。可能您的脚本变量没有正确初始化?
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);
}
链接到fiddle。您的脚本变量包含任何元素吗?
getElementsByTagName返回标记名与传递值匹配的xmlNode列表。例如,要使用标记名测试获取所有节点,可以使用函数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>