2013-07-09 130 views
0

我需要知道如何刪除數字簽名標籤。它是一個籠罩數字簽名從xml文件中刪除數字簽名標籤

我的XML文件看起來像下面

<?xml version="1.0" encoding="utf-8" ?> 
<questionset> 
    <question category="graph" /> 
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
    <SignedInfo> 
    </SignedInfo> 
</Signature> 
</questionset> 

我想出頭

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.PreserveWhitespace = false; 
xmlDoc.Load(new XmlTextReader(Doc)); 
XmlNode rnode = xmlDoc.SelectSingleNode("questionset/Signature"); 
XmlNode parent = rnode.ParentNode; 
parent.RemoveChild(rnode); 
string newXML = xmlDoc.OuterXml; 
XmlTextWriter xmlWriter = new XmlTextWriter(filename2, new UTF8Encoding(false)); 
xmlDoc.WriteTo(xmlWriter); 
xmlWriter.Close(); 

但rnode返回空值..

,我使用LINQ

嘗試
XElement document = XElement.Load(Doc); 
XElement signElement = document.Descendants("Signature").FirstOrDefault<XElement>(); 
signElement.Remove(); 

這裏也signElement返回空值..所以兩個都沒有工作。有人告訴我我錯了什麼地方,或者你可以告訴我正確的方法來刪除數字簽名。

回答

1
XElement document = XElement.Load(Doc); 

IEnumerable<XElement> signElements = document.Descendants("questionSet").Elements("Signature"); 

會給你你想要刪除的元素。在這種情況下,"Signature"

然後調用Remove()

document.Descendants("questionSet").Elements("Signature").Remove(); 

然後保存XML回到一個文件,如果需要的;

doc.Save("output.xml"); 

查看MSDN Remove()瞭解更多詳情。

而且,你的LINQ to XML查詢

XElement signElement = document.Descendants("Signature").FirstOrDefault<XElement>(); 

會獲得「簽名」的後代/孩子再集合中返回的第一個項目。所以你會得到第一個「SignedInfo」節點。

+0

新的xml文件已創建,但標籤未被刪除.. –

+0

發佈一個有效的xml,我們將測試它。 –

+0

發佈了有效的xml ... –