与 linq 的特定值
本文关键字:linq | 更新日期: 2023-09-27 18:32:52
我有一个xml文件,我想从中提取一些数据。
我有这个 linq 查询,我在 var 中获取详细信息,但我无法达到值。
XNamespace aw1 = "http://www.stackoverflow.com/FAQ/";
var r03 = from el in obj.Descendants().Elements(aw1 + "co")
select el.Elements(aw1 + "doc");
我尝试使用循环,但我得到一个转换错误,我认为有一种直接的方法可以获取值,我试图避免循环,因为我们总是知道结构,没有必要解析整个文件并得到我正在寻找的东西。
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<wsse:Security S:mustUnderstand="1" xmlns:wsse="http://docs.org/wss/2004/secext-1.0.xsd">
<wsu:Timestamp xmlns:wsu="http://docs.org/utility-1.0.xsd">
<wsu:Created>2016-01-28T21:54:57Z</wsu:Created>
</wsu:Timestamp>
</wsse:Security>
</S:Header>
<S:Body>
<ConsultarEdocumentResponse xmlns:ns2="http://www.stackoverflow.com/" xmlns="http://www.stackoverflow.com/FAQ/">
<response>
<mensaje>No Message</mensaje>
<resultadoBusqueda>
<co>
<doc>151AQP</doc>
<patentes>
<patente>1111</patente>
</patentes>
<facturas>
<factura>
<subdivision>0</subdivision>
<mercancias>
<mercancia>
<desc>ACCESORIO</desc>
<cantidad>189000</cantidad>
</mercancia>
<mercancia>
<desc>ACCESORIO A</desc>
<cantidad>9000</cantidad>
</mercancia>
</mercancias>
</factura>
</facturas>
<emisor>
<tipoIdentificador>0</tipoIdentificador>
<domicilio>
<calle>STREET</calle>
<codigoPostal>55555</codigoPostal>
</domicilio>
</emisor>
<destinatario>
<tipoIdentificador>1</tipoIdentificador>
<domicilio>
<calle>Street</calle>
<codigoPostal>65555</codigoPostal>
</domicilio>
</destinatario>
</co>
</resultadoBusqueda>
</response>
</ConsultarEdocumentResponse>
</S:Body>
</S:Envelope>
请帮我解决这个问题,我一直在尝试几件事,但我觉得我没有得到任何有用的东西。提前谢谢你。
LinqToXML确实是一个很棒的库,但是SOAP太糟糕了,以至于LinqToXML也很糟糕。看起来您混合了一些 XML 命名空间:
XDocument xdoc = XDocument.Parse(xml);
XNamespace soapNs = "http://schemas.xmlsoap.org/soap/envelope/";
XNamespace soNs = "http://www.stackoverflow.com/FAQ/";
var docList = xdoc.Root.Descendants(soapNs + "Body")
.Descendants(soNs + "co")
.Descendants(soNs + "doc")
.ToList();
docList.ForEach(x => Console.WriteLine(x.Value));
有关详细信息,请查看此 SO 问题:使用 LINQ to XML 解析 SOAP 消息