C# LINQ到XML-Null
我有一个XML,试图提取登录名,但没有成功。它总是给我空的C# LINQ到XML-Null,c#,C#,我有一个XML,试图提取登录名,但没有成功。它总是给我空的 <REQUEST xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <LOGIN> <USERID>ID</USERID> <PASSWORD>12345</PASSWORD> </LOGIN> XDocument doc = XDocument.Parse(xm
<REQUEST xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<LOGIN>
<USERID>ID</USERID>
<PASSWORD>12345</PASSWORD>
</LOGIN>
XDocument doc = XDocument.Parse(xmlString);
var login = from x in doc.Root.Elements("REQUEST").Elements("LOGIN")
select new login
{
UserId = x.Element("USERID").Value,
Password = x.Element("PASSWORD").Value
};
var loginobject=login.FirstOrDefault();
身份证件
12345
XDocument doc=XDocument.Parse(xmlString);
var login=来自doc.Root.Elements(“请求”).Elements(“登录”)中的x
选择新登录名
{
UserId=x.Element(“UserId”).Value,
密码=x.Element(“密码”).值
};
var loginobject=login.FirstOrDefault();
您的XML格式有点不正确,因为您将请求
作为根对象。尝试将其更改为以下内容:
<?xml version="1.0"?>
<REQUEST>
<LOGIN>
<USERID>ID</USERID>
<PASSWORD>12345</PASSWORD>
</LOGIN>
</REQUEST>
当您使用doc.Root
时,它获取XML文档的根元素,在本例中是REQUEST
。然后,您不希望获得请求
元素,而是希望获得登录
元素,因为您已经在请求
节点
试试这个:
XDocument doc = XDocument.Parse(xmlString);
var login = from x in doc.Root.Elements("LOGIN")
select new login
{
UserId = x.Element("USERID").Value,
Password = x.Element("PASSWORD").Value
};
根元素已经是请求,因此您希望直接跳转到查询中的登录子元素。我在Linqpad(测试/开发查询的绝佳工具)中获得了以下成果:
string xmlString=@”
身份证件
12345
";
XDocument doc=XDocument.Parse(xmlString);
var login=来自doc.Root.Elements中的x(“login”)
选择新的
{
UserId=x.Element(“UserId”).Value,
密码=x.Element(“密码”).值
};
var loginobject=login.FirstOrDefault();
loginobject.Dump();
XDocument doc = XDocument.Parse(xmlString);
var login = from x in doc.Root.Elements("LOGIN")
select new login
{
UserId = x.Element("USERID").Value,
Password = x.Element("PASSWORD").Value
};
string xmlString = @"<REQUEST xmlns:i='http://www.w3.org/2001/XMLSchema-instance'>
<LOGIN>
<USERID>ID</USERID>
<PASSWORD>12345</PASSWORD>
</LOGIN></REQUEST>";
XDocument doc = XDocument.Parse(xmlString);
var login = from x in doc.Root.Elements("LOGIN")
select new
{
UserId = x.Element("USERID").Value,
Password = x.Element("PASSWORD").Value
};
var loginobject=login.FirstOrDefault();
loginobject.Dump();