在 xelement 中查询 select 值
query for select value in xelement
我有一个这样的 XMl :
<?xml version="1.0" encoding="utf-8"?>
<Words>
<List>
<Cid Name="c1" ID="11">
<Word Name="test1" ID="1">
<Name>test1</Name>
<Link>yahoo.com</Link>
</Word>
</Cid>
<Cid Name="c2" ID="22">
<Word Name="w0" ID="0">
<Name>test0</Name>
<Link>yahoo0.com</Link>
</Word>
<Word Name="w1" ID="1">
<Name>test</Name>
<Link>yahoo.com</Link>
</Word>
<Word Name="w1" ID="2">
<Name>mehrdad</Name>
<Link>google.com</Link>
</Word>
</Cid>
</List>
</Words>
我想搜索单词,如果节点存在,获取名称和 link
所以我尝试使用此代码进行搜索
XDocument doc = XDocument.Load(data);
var relatedDocs =
from CatID in
doc.Elements("Cid")
.Where(x => (string)x.Attribute("ID").Value == ctId.ToString())
.Select(x => x.Elements("Word"))
.Where (What is here ? don have access to Attribute so what ?) (x => x.Attribute("Name").Value == sName)
select new SelectWord {
NameAtt = CatID.Attribute("Name").Value,
IDAtt = CatID.Attribute("ID").Value,
Name = CatID.Element("Name").Value,
Link = CatID.Element("URL").Value
};
这是 SelectWord class
class SelectWord
{
public string NameAtt { get; set; }
public string IDAtt { get; set; }
public string Name { get; set; }
public string Link { get; set; }
}
而且结果总是空的!
我认为我的查询有误,需要更改什么?
请试试这个:
var relatedDocs =
from CatID in doc.Root.Element("List").Elements("Cid")
.Where(x => x.Attribute("ID").Value == ctId.ToString())
.SelectMany(x => x.Elements("Word")
.Where(w => w.Attribute("Name").Value == sName))
select new SelectWord
{
NameAtt = CatID.Attribute("Name").Value,
IDAtt = CatID.Attribute("ID").Value,
Name = CatID.Element("Name").Value,
Link = CatID.Element("Link").Value
};
我有一个这样的 XMl :
<?xml version="1.0" encoding="utf-8"?>
<Words>
<List>
<Cid Name="c1" ID="11">
<Word Name="test1" ID="1">
<Name>test1</Name>
<Link>yahoo.com</Link>
</Word>
</Cid>
<Cid Name="c2" ID="22">
<Word Name="w0" ID="0">
<Name>test0</Name>
<Link>yahoo0.com</Link>
</Word>
<Word Name="w1" ID="1">
<Name>test</Name>
<Link>yahoo.com</Link>
</Word>
<Word Name="w1" ID="2">
<Name>mehrdad</Name>
<Link>google.com</Link>
</Word>
</Cid>
</List>
</Words>
我想搜索单词,如果节点存在,获取名称和 link
所以我尝试使用此代码进行搜索
XDocument doc = XDocument.Load(data);
var relatedDocs =
from CatID in
doc.Elements("Cid")
.Where(x => (string)x.Attribute("ID").Value == ctId.ToString())
.Select(x => x.Elements("Word"))
.Where (What is here ? don have access to Attribute so what ?) (x => x.Attribute("Name").Value == sName)
select new SelectWord {
NameAtt = CatID.Attribute("Name").Value,
IDAtt = CatID.Attribute("ID").Value,
Name = CatID.Element("Name").Value,
Link = CatID.Element("URL").Value
};
这是 SelectWord class
class SelectWord
{
public string NameAtt { get; set; }
public string IDAtt { get; set; }
public string Name { get; set; }
public string Link { get; set; }
}
而且结果总是空的!
我认为我的查询有误,需要更改什么?
请试试这个:
var relatedDocs =
from CatID in doc.Root.Element("List").Elements("Cid")
.Where(x => x.Attribute("ID").Value == ctId.ToString())
.SelectMany(x => x.Elements("Word")
.Where(w => w.Attribute("Name").Value == sName))
select new SelectWord
{
NameAtt = CatID.Attribute("Name").Value,
IDAtt = CatID.Attribute("ID").Value,
Name = CatID.Element("Name").Value,
Link = CatID.Element("Link").Value
};