как получить значение (узел) из XML, используя asp. net c# - PullRequest
0 голосов
/ 28 апреля 2020
<AspResp errCode="NA" errMsg="NA" status="1" transId="6c8c5901-6119-4c59-89ce-b3f9efb141f2">
    <EResp errCode="NA" errMsg="NA" resCode="ea3229b1-c9ff-455b-8d3f-84a4c2384c85" status="1" ts="2020-04-27T15:00:10.947" txn="90f4f36f-7051-4c6d-bed4-bd717ddfa38d">
        <Signatures>
            <DocSignature error="NA" id="1">test</DocSignature>
        </Signatures>
    </EResp>
</AspResp>

Я хочу значение transId от первого узла в приведенном выше XML.

Я использовал этот код, но он бесполезен

foreach (XElement hashElement in doc.Descendants("transId"))
{
    hashValue = (string)hashElement;
}

Ответы [ 3 ]

1 голос
/ 28 апреля 2020

Выберите нужный узел. Поскольку transId является атрибутом, доступ к нему должен быть следующим:

string attrtransId  = node.Attributes["transId"].value
0 голосов
/ 28 апреля 2020

Проверено xpath с http://xpather.com/2S8920tn

string XMLText =
            @"<AspResp errCode='NA' errMsg='NA' status='1' transId='6c8c5901-6119-4c59-89ce-b3f9efb141f2'><EResp errCode='NA' errMsg='NA' resCode='ea3229b1-c9ff-455b-8d3f-84a4c2384c85' status='1' ts='2020-04-27T15:00:10.947' txn='90f4f36f-7051-4c6d-bed4-bd717ddfa38d'><Signatures><DocSignature error='NA' id='1'>test</DocSignature></Signatures></EResp></AspResp>";
var doc = XDocument.Parse(XMLText);
string transId = doc.XPathSelectElement("/node()[1]").Attribute("transId")?.Value;
0 голосов
/ 28 апреля 2020

Посмотрите на это, это очень подробно и легко понять.

Как мне прочитать и проанализировать файл XML в C#?

string XMLText = @"<AspResp errCode='NA' errMsg='NA' status='1' transId='6c8c5901-6119-4c59-89ce-b3f9efb141f2'><EResp errCode='NA' errMsg='NA' resCode='ea3229b1-c9ff-455b-8d3f-84a4c2384c85' status='1' ts='2020-04-27T15:00:10.947' txn='90f4f36f-7051-4c6d-bed4-bd717ddfa38d'><Signatures><DocSignature error='NA' id='1'>test</DocSignature></Signatures></EResp></AspResp>";
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(XMLText);
        XmlNode node = doc.GetElementsByTagName("AspResp")[0];
        string transId = node.Attributes["transId"].Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...