使用c#读取具有嵌套名称空间的XML
我试图使用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
成功=“正确”-只有“正确”部分
状态=“已释放”-仅“已释放”位 名称空间显然是这里的问题——但我不能正确理解它。 有人能在这里提供一个解析这个文件的例子吗
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();