我在字符串中有一个xml响应..
string rerricingresponsexml= xmlvalue;
xmlvalue是
<?xml version="1.0" encoding="UTF-8"?>
<Repricing>
<Flights>
.....
</Flights>
</Repricing>
现在我要提取<Flights> to \</Flights>
我试过
XmlDocument doc = new XmlDocument();
doc.Load(rerricingresponsexml);
XmlNode headerNode = doc.SelectSingleNode("RePricing");
if (headerNode != null)
{
string headerNodeXml = headerNode.OuterXml;
}
但它说xml中的非法字符.. 请帮忙..
答案 0 :(得分:4)
试试这个:
var xml = XElement.Parse(xmlString);
var flights = xml.DescendantsAndSelf("Flights");
它将返回IEnumerable<XElement>
。如果你想把它作为字符串,你可以使用它:
string.Concat(flights.Nodes())
答案 1 :(得分:0)
Xml区分大小写。使用Repricing
代替RePricing
。您还应该使用LoadXml方法加载xml字符串。使用Load方法时,文档会尝试加载不存在的文件:
doc.LoadXml(rerricingresponsexml);
XmlNode headerNode = doc.SelectSingleNode("Repricing");
还要考虑使用Linq to Xml进行解析:
var xdoc = XDocument.Parse(rerricingresponsexml);
var flights = from f in xdoc.Root.Elements("Flights").Elements()
select new {
SearchId = (string)f.Element("SearchId"),
Currency = (string)f.Element("Currency"),
AdultPrice = (decimal)f.Element("AdultPrice"),
// etc
Legs = from l in f.Element("LegDetails").Elements()
select new {
AirLineCode = (string)l.Element("AirLineCode"),
FromSector = (string)l.Element("FromSector"),
ToSector = (string)l.Element("ToSector")
// etc
}
};
答案 2 :(得分:0)
使用Linq To XML,只需两行代码就可以了:
XDocument doc = XDocument.Load(rerricingresponsexml);
string flightDetails= doc.Descendants("Flights").SingleOrDefault().ToString();
希望它有所帮助!