Я пытаюсь десериализовать InnerXML в класс, и по какой-то причине XML продолжает меняться, и сколько раз я пытаюсь получить класс правильно, кажется, что он снова меняет форму.
Поэтому я отказался и решил попробовать другой метод.
Возможно ли получить значение параметра внутри InnerXML вручную с помощью С#?
Скажем, например, мой XML innerXML выглядел так:
<Timestamp>2014-08-22T21:45:00Z</Timestamp>
<Subscriber>https://www.dogdoza.co.uk</Subscriber>
<Order>
<OrderID>111867</OrderID>
<InvoiceNumber>DOZA-9725410</InvoiceNumber>
<CustomerID>4542</CustomerID>
Можно ли вытащить, скажем, значение Абонента
Если это возможно, я могу просто вытащить нужные значения вручную. Не идеально, но их всего около 10...
Я огляделся, но не смог найти код, который я могу получить.
Кто-нибудь, пожалуйста, дайте мне какие-нибудь рекомендации?
благодаря
Вы можете добиться того, чего хотите, используя LINQ to XML
:
XElement myXml = XElement.Load(@"XmlLocationHere");
XElement subscriber = myXml.Descendants("Subscriber").FirstOrDefault();
XElement.Descendants
возвращает коллекцию элементов-потомков для этого документа или элемента в порядке документа. Этот метод вернет IEnumerable<XElement>
, так как может быть более одного элемента "Абонент", но в вашем случае мы выбираем FirstOrDefault
, который возвращает первое вхождение.
Попробуйте загрузить XML в XDocument. Затем попробуйте использовать XPathSelectElement, чтобы найти нужное значение.
Возможно, вам нужно обернуть ваш внутренний xml в корневой элемент, потому что он не принимает несколько корней.
Псевдо пример:
// set up your xml document
string xml = "<rootelement>" + myInnerXml + "</rootelement>";
XDocument doc = new XDocument();
doc.Parse(xml);
XElement subscriber = doc.XPathSelectElement("/rootelement/Subscriber");
string value = subscriber.Value;