powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как с помощью Linq to Xml получить значения конкретных тегов...
4 сообщений из 4, страница 1 из 1
как с помощью Linq to Xml получить значения конкретных тегов...
    #39103106
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
коллеги, подскажите как с помощью Linq to Xml получить значения конкретных тегов...
X509Certificate и DigestValue ?

уже мозг сломал...

Code:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 
                    var reqNodes = from el in xdoc.Root.Descendants()
                                   where el.Name.LocalName == "Signature"
                                   select el;

                    foreach (var reqNode in reqNodes)
                    {
                        
                        XNamespace xns = reqNode.Name.Namespace;
                        //Queries making use of namespace:
                        var SignedInfo = (from el in reqNode.Elements("SignedInfo")
                                          select el).ToList();
                        foreach (var item in SignedInfo)
                        {
#### сюда компилятор не попадает почему-то...
                        }

                        var SignatureValue = (from el in reqNode.Elements(xns + "SignatureValue")
                                              select el).First().Value;

                        var KeyInfo = (from el in reqNode.Elements("KeyInfo")
                                       select el).ToList();
                    }



Xml:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <ds:SignedInfo>
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
    <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" />
    <ds:Reference URI="#SIGNED_BY_CONSUMER">
      <ds:Transforms>
        <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
        <ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform" />
      </ds:Transforms>
      <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
      <ds:DigestValue>xxxxxxxxxxxxxxxxxxxxxxx</ds:DigestValue>
    </ds:Reference>
  </ds:SignedInfo>
  <ds:SignatureValue>gggggggggggggggggggggg</ds:SignatureValue>
  <ds:KeyInfo>
    <ds:X509Data>
      <ds:X509Certificate>zzzzzzzzzzzzzzzzzzzzzzz</ds:X509Certificate>
    </ds:X509Data>
  </ds:KeyInfo>
</ds:Signature>
...
Рейтинг: 0 / 0
как с помощью Linq to Xml получить значения конкретных тегов...
    #39103134
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslash,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
// пример 1
XElement x = XElement.Parse(xml);
XNamespace ds = "http://www.w3.org/2000/09/xmldsig#";
var digestValue = x.Element(ds + "SignedInfo")
    .Element(ds + "Reference")
    .Element(ds + "DigestValue");
var x509certificate = x.Element(ds + "KeyInfo")
    .Element(ds + "X509Data")
    .Element(ds + "X509Certificate");

// пример 2
XmlReader reader = XmlReader.Create(new StringReader(xml));
XElement x = XElement.Load(reader);
XmlNamespaceManager nsman = new XmlNamespaceManager(reader.NameTable);
nsman.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#");
var digestValue = x.XPathSelectElement("/ds:SignedInfo/ds:Reference/ds:DigestValue", nsman);
var x509certificate = x.XPathSelectElement("/ds:KeyInfo/ds:X509Data/ds:X509Certificate", nsman);
...
Рейтинг: 0 / 0
как с помощью Linq to Xml получить значения конкретных тегов...
    #39103202
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flashslash#### сюда компилятор не попадает почему-то...

Компилятор то попадает, твой код не заходит:)
Нужно учитывать пространства имен.
...
Рейтинг: 0 / 0
как с помощью Linq to Xml получить значения конкретных тегов...
    #39103318
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо ребята!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как с помощью Linq to Xml получить значения конкретных тегов...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]