使用c#读取具有嵌套名称空间的XML

使用c#读取具有嵌套名称空间的XML,c#,xml,xnamespace,C#,Xml,Xnamespace,我试图使用C#从这个XML中提取以下值 消息-内部文本 成功=“正确”-只有“正确”部分 状态=“已释放”-仅“已释放”位 名称空间显然是这里的问题——但我不能正确理解它。 有人能在这里提供一个解析这个文件的例子吗 CreateLoan增加生效日期当前业务日期(2016年9月8日)。 尚未生成CreateLoanIncrementIntent通知。 CreateLoanIncrease您将要释放此增量。 试试xml linq: using System; using System.Colle

我试图使用C#从这个XML中提取以下值

消息-内部文本
成功=“正确”-只有“正确”部分
状态=“已释放”-仅“已释放”位

名称空间显然是这里的问题——但我不能正确理解它。 有人能在这里提供一个解析这个文件的例子吗



CreateLoan增加生效日期当前业务日期(2016年9月8日)。
尚未生成CreateLoanIncrementIntent通知。
CreateLoanIncrease您将要释放此增量。
试试xml linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            XElement messages = doc.Descendants().Where(x => x.Name.LocalName == "Messages").FirstOrDefault();
            XNamespace ns = messages.GetDefaultNamespace();

            List<string> strMessages = messages.Elements(ns + "Message").Select(x => (string)x).ToList();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
XDocument doc=XDocument.Load(文件名);
XElement messages=doc.subjects()。其中(x=>x.Name.LocalName==“messages”).FirstOrDefault();
XNamespace ns=messages.GetDefaultNamespace();
列出strMessages=messages.Elements(ns+“Message”)。选择(x=>(字符串)x.ToList();
}
}
}

您可以使用Linq2Xml和XPath

var xDoc = XDocument.Load(filename);

var success = (bool)xDoc.XPathSelectElement("//CreateLoanIncreaseResponse").Attribute("success");
var status = (string)xDoc.XPathSelectElement("//OutstandingTransactionAsReturnValue").Attribute("status");
var messages = xDoc.XPathSelectElements("//Message").Select(x => (string)x.Value).ToList();

感谢您的快速响应!这很有效。
var xDoc = XDocument.Load(filename);

var success = (bool)xDoc.XPathSelectElement("//CreateLoanIncreaseResponse").Attribute("success");
var status = (string)xDoc.XPathSelectElement("//OutstandingTransactionAsReturnValue").Attribute("status");
var messages = xDoc.XPathSelectElements("//Message").Select(x => (string)x.Value).ToList();