4

我在字符串中有一个 xml 响应..

 string rerricingresponsexml= xmlvalue;

xml值是

   <?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中的非法字符..请提供任何帮助..

4

3 回答 3

6

尝试这个:

var xml = XElement.Parse(xmlString);
var flights = xml.DescendantsAndSelf("Flights");

它会返回IEnumerable<XElement>。如果你想得到它作为字符串,你可以使用这个:

string.Concat(flights.Nodes())
于 2013-09-27T06:59:23.047 回答
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
                         }
              };
于 2013-09-27T06:55:01.243 回答
0

使用 LinqToXML 广告,只需两行代码即可:

XDocument doc = XDocument.Load(rerricingresponsexml);
string flightDetails= doc.Descendants("Flights").SingleOrDefault().ToString();

希望能帮助到你!

于 2013-09-27T06:57:10.117 回答