2010-03-04 12 views
0

我创建XML文件是这样的:加密XML名为users.xml中 元

<Users> 
    <user> 
    <uin>"0"</uin> 
    <name>black</name> 
    <email>"[email protected]"</email> 
    <created>"3/02/2010"</created> 
    </user> 
    <user> 
    <uin>"123456780"</uin> 
    <name>sam</name> 
    <email>"[email protected]"</email> 
    <created>"3/02/2010"</created> 
    </user> 
    <user> 
    <uin>"123456799"</uin> 
    <name>kblack</name> 
    <email>"[email protected]"</email> 
    <created>"3/02/2010"</created> 
    </user> 
</Users> 

我想元素进行加密。使用代码如

XmlElement uinelement = (XmlElement)xmldoc.SelectSingleNode("Users/user/uin"); 

...仅加密user.xml文件中的第一个UIN。

如何加密所有UIN元素?

谢谢
康塔

+0

您显示的代码不会加密任何内容。它选择元素,但不加密。 你真的想做什么?你想选择所有的元素?或者你想加密一些东西?或者是什么? – Cheeso 2010-03-04 20:14:55

回答

0

它看起来像你的XML被编码不正确,所以我不能看到你的文档结构,不过我猜想,使用的SelectNodes()XmlDocument类的方法,而不是SelectSingleNode()可以做到这一点。

如果您需要将转换输出到新的XML文档,您可能还需要查看一些Linq to XML功能。

+0

让我试试SelectNodes()方法,而不是SelectSingleNode() – Kanta 2010-03-04 20:32:05

+0

{XmlDocument xmldoc = new XmlDocument(); 尝试{xmldoc.Load(“users.xml”); (例外ex){ Console.WriteLine(ex.Message);} } TripleDESCryptoServiceProvider tDESkey = new tripleDESCryptoServiceProvider(); XmlDocument uinElem = xmldoc.SelectSingleNode(“users/user/uin”); EncryptedXml exml = new EncryptedXml(xmldoc); //如何加密节点而不是元素???? byte [] encrypteduin = exml.EncryptData(uinElem,tDESkey,false); EncryptedData ed = new EncryptedData(); cotinution – Kanta 2010-03-04 21:29:25

+0

continution ed.Type = EncryptedXml.XmlEncElementUrl; ed.EncryptionMethod = new EncryptionMethod(EncryptedXml.XmlEncTripleDESUrl); ed.CipherData = new CipherData(); ed.CipherData.CipherValue = encrypteduin; EncryptedXml.ReplaceElement(billinguin,ed,false); xmldoc.Save(“encrypteduser.xml”); 当我选择XmlDocument类的selectNode()时,不知道该如何改变这一行 byte [] encrypteduin = exml.EncryptData(uinElem,tDESkey,false); EncryptData()是为元素不为节点,我认为 我遵循http://www.devx.com/dotnet/Article/21564 – Kanta 2010-03-04 21:31:11