Получение значения по строке XML - PullRequest
0 голосов
/ 27 января 2020

Привет, я работал над этой asp. net веб-формой, написанной на c#, и в настоящее время я получаю значение для XML результата, инкапсулированного в строку. Я немного знаю о XML и вот мои попытки.

У меня есть эта XML строка

<Code>0</Code>
<responseData>
    <LotDetails>
        <DEVICE>OH503/E-ICAM</DEVICE>
        <DEVICE12NC>340000064194</DEVICE12NC>
        <CONTAINERNAME>MBP001012700</CONTAINERNAME>
        <PACKAGE>SOT1207</PACKAGE>
    </LotDetails>
</responseData>

, и мне нужно получить значение <CONTAINERNAME> в c# у меня есть этот код

string result = tmpVal.GetQueryResult(System.Configuration.ConfigurationManager.AppSettings["queryname_CMSS"].ToString(), System.Configuration.ConfigurationManager.AppSettings["paramnames_CMSS"].ToString(), LotID).InnerXml.ToString();
     XmlDocument doc = new XmlDocument();
            doc.LoadXml(result);
            XmlNode idNode = doc.SelectSingleNode("//responseData/LotDetails/CONTAINERNAME");

Мой код выше возвращает мне ошибку dditional information: There are multiple root elements. Line 1, position 16. Похоже, я не получаю элемент root в моем XML результате. Кто-нибудь поможет мне с этим? Заранее спасибо. Надеюсь, вы понимаете, о чем я.

1 Ответ

1 голос
/ 27 января 2020

Вы можете десериализовать xml, у которого нет родительского узла, например,

    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<parent>" + result + "</parent>");
    //doc.LoadXml($"<parent>{result}</parent>");

    XmlNode idNode = doc.SelectSingleNode("//responseData/LotDetails/CONTAINERNAME");

Или вы можете использовать метод для Разбор XML без родительского узла .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...