繁体   English   中英

xml如何满足C#条件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM