C# 从字符串中提取部分xml

C# 从字符串中提取部分xml,c#,xml,C#,Xml,我有一个字符串形式的xml响应 string rerricingresponsexml= xmlvalue; xmlvalue为 <?xml version="1.0" encoding="UTF-8"?> <Repricing> <Flights> ..... </Flights> </Repricing> 但是它说xml中的字符是非法的。。 请提供任何帮助。Xml区分大小写。使用重新定价而不是重新定价。此

我有一个字符串形式的xml响应

 string rerricingresponsexml= xmlvalue;
xmlvalue为

   <?xml version="1.0" encoding="UTF-8"?>
<Repricing>
  <Flights>
    .....
  </Flights>
</Repricing>
但是它说xml中的字符是非法的。。
请提供任何帮助。

Xml区分大小写。使用
重新定价
而不是
重新定价
。此外,还应使用方法加载xml字符串。使用加载方法时,文档尝试加载不存在的文件:

doc.LoadXml(rerricingresponsexml);
XmlNode headerNode = doc.SelectSingleNode("Repricing");

也考虑使用解析:

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
                         }
              };

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

XDocument doc = XDocument.Load(rerricingresponsexml);
string flightDetails= doc.Descendants("Flights").SingleOrDefault().ToString();
希望有帮助

试试这个:

var xml = XElement.Parse(xmlString);
var flights = xml.DescendantsAndSelf("Flights");
它将返回
IEnumerable
。如果要将其作为字符串获取,可以使用以下命令:

string.Concat(flights.Nodes())

你从哪里得到的错误?加载文档时?@Sasidharan:您尝试过我的解决方案吗?问题可能是相同的,但提供的答案不同…这不是问题所在..我在doc.Load()中遇到错误OP说他在
.Load
,而不是
。选择SingleNode
。我不确定这是否能解决他的问题我认为这是因为…我用null替换了它…尽管它是一样的error@Sasidharan请参阅更新-应使用Looad方法从文件加载XmlDocument。所以,文档尝试加载名为xml响应的文件OK还有其他解决方法吗..真棒@Hamlet Hakobyan…它工作得很好。。
string.Concat(flights.Nodes())