Получить значения вручную из XML InnerXML

1

Я пытаюсь десериализовать 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...

Я огляделся, но не смог найти код, который я могу получить.

Кто-нибудь, пожалуйста, дайте мне какие-нибудь рекомендации?

благодаря

Теги:

2 ответа

1
Лучший ответ

Вы можете добиться того, чего хотите, используя LINQ to XML:

XElement myXml = XElement.Load(@"XmlLocationHere");
XElement subscriber = myXml.Descendants("Subscriber").FirstOrDefault();

XElement.Descendants возвращает коллекцию элементов-потомков для этого документа или элемента в порядке документа. Этот метод вернет IEnumerable<XElement>, так как может быть более одного элемента "Абонент", но в вашем случае мы выбираем FirstOrDefault, который возвращает первое вхождение.

  • 1
    идеальный! большое спасибо!
0

Попробуйте загрузить 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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню