Как вручную получить модифицированный XML после использования преобразований без XSLT? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть подписанный документ XML.Существует подпись узла внизу документа.Этот узел имеет выражения XPath, которые описывают последовательность действий сверху вниз.Я хочу получить модифицированный xml, шаг за шагом выполняющий действие выражения XPath.

Часть исходного xml:

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.06" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CstmrCdtTrfInitn>
    <PmtInf>
    </PmtInf>
    <SplmtryData>
      <Envlp>
        <SngtrSt>
          <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" id="Test1">
            <SignedInfo>
              <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
              <SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:*someCert*"/>
              <Reference URI="">
                <Transforms>
                  <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                  <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
                  <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
                    <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::dsig:Signature)</XPath>
                  </Transform>
                  <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
                    <XPath xmlns:target_prefix="urn:iso:std:iso:20022:tech:xsd:pain.001.001.06">ancestor-or-self::target_prefix:Document</XPath>
                  </Transform>
                  <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
                    <XPath xmlns:target_prefix="urn:iso:std:iso:20022:tech:xsd:pain.001.001.06">ancestor-or-self::target_prefix:CstmrCdtTrfInitn</XPath>
                  </Transform>
                  <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
                    <XPath xmlns:target_prefix="urn:iso:std:iso:20022:tech:xsd:pain.001.001.06">ancestor-or-self::target_prefix:PmtInf[1]</XPath>
                  </Transform>
                </Transforms>

Результат, который я жду:

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.06" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CstmrCdtTrfInitn>
    <PmtInf>
    </PmtInf>
  </CstmrCdtTrfInitn>
</Document>

Как я могу сделать это с System.Security.Cryptography.Xml или некоторой библиотекой ???

...