【发布时间】:2021-07-26 09:51:21
【问题描述】:
如何在 CDATA 中获得价值?
我有什么: 它是字符串,我想解析它并获得 NOM_VAG 等值
<?xml version="1.0" encoding="windows-1251"?>
<GetInformReply><Inform_ID>-14</Inform_ID><ASOUPReply>
<![CDATA[<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getReferenceSPV4664Response xmlns:ns2="http://service.siw.pktbcki.rzd/">
<return><referenceSPV4664><row><NOM_VAG>75142901</NOM_VAG><ROD_VAG_UCH>70</ROD_VAG_UCH><KOD_SOB>20</KOD_SOB><DATE_NACH xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><STAN_NACH>0</STAN_NACH><DOR_NACH>0</DOR_NACH><STR_NACH>0</STR_NACH><DATE_KON xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><STAN_NAZN>612003</STAN_NAZN><DOR_NAZN>61</DOR_NAZN><STR_NAZN>643</STR_NAZN><GRUZPOL>4232</GRUZPOL><GRUZPOL_OKPO>0000000000</GRUZPOL_OKPO>
</row></referenceSPV4664><amount>1</amount><amountRF>1</amountRF><amountNotRF>0</amountNotRF><codeTypeObject>1</codeTypeObject><returnCode>0</returnCode><errorCode>0</errorCode><errorMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><title>Справка о дислокации вагона</title><dateIzm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></return></ns2:getReferenceSPV4664Response></S:Body>
</S:Envelope>
]]>
</ASOUPReply></GetInformReply>
我需要在 CDATA 之间解析 xml
What I did:
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(xmlText);
XmlElement xRoot = xDoc.DocumentElement;
xRoot.GetElementsByTagName("<![CDATA[]]>");
foreach (XmlNode item in xRoot)
{
if (item.LocalName == "ASOUPReply")
{
XmlNode attr = item.Attributes.GetNamedItem("row");
foreach (var itemXMl in ((System.Xml.XmlCharacterData)item.LastChild).Data)
{
}
return xmlText;
更新: 这行得通
public void pp (string text)
{
XDocument xml = XDocument.Parse(text);
var soapResponse = xml.Descendants().Where(x => x.Name.LocalName == "row").Select(x => new SPR4664()
{
NOM_VAG = (string)x.Element(x.Name.Namespace + "NOM_VAG"),
ROD_VAG_UCH = (string)x.Element(x.Name.Namespace + "ROD_VAG_UCH"),
}).FirstOrDefault();
}
型号:
public class SPR4664
{
public string NOM_VAG { get; set; }
public string ROD_VAG_UCH { get; set; }
}
但我有大约 30 行。 我必须手动写每个人吗? Link
【问题讨论】:
-
OMG XML 里面的 CDATA 里面的 XML
-
这就像梦中的梦
-
看起来像 Getting CDATA XML Section Using Linq 的副本,同意吗?
-
噩梦中的噩梦甚至