从XML InnerXML手动检索值

时间:2014-08-23 09:03:16

标签: c# xml

我一直在尝试将InnerXML反序列化为一个类,并且由于某种原因,XML不断改变形状,但是无论我多次试图让类正确,它似乎再次改变了形状。

所以我放弃了,并决定尝试另一种方法。

是否可以使用c#?

手动检索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 个答案:

答案 0 :(得分:1)

您可以使用LINQ to XML来实现您想要的目标:

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

XElement.Descendants按文档顺序返回此文档或元素的后代元素的集合。此方法将返回IEnumerable<XElement>,因为可能有多个&#34;订阅者&#34;元素,但在您的情况下,我们选择FirstOrDefault,它返回第一个匹配项。

答案 1 :(得分:0)

将您的XML loading改为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;