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是如何工作的?提前谢谢。

xml将如何满足c条件

阅读注释后,如果计数器返回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>