簡體   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