这是我的问题
我检索并显示像这样的xml数据
XDocument doc = XDocument.Load("TextFile1.xml");
List<string> a = new List<string>();
var kitap = doc.Descendants("Author");
foreach (var item in kitap)
{
a.Add(item.Value);
}
list1.ItemsSource = a;
我有两个不同的xml文件,例如;
<Books>
<Book>
<Author>Author1</Author>
</Book>
<Book>
<Author>Author2</Author>
</Book>
</Books>
第二个是这样的;
<Books>
<Book>
<BookName>ExampleBook1</BookName>
<Author>Author</Author>
</Book>
<Book>
<BookName>ExampleBook2</BookName>
<Author>Author2</Author>
</Book>
</Books>
现在我需要做的是我需要根据第一个xml文件获取行,如果在第一个XML中选择了“Author”,我需要检索并显示该行;
<Book>
<BookName>ExampleBook1</BookName>
<Author>Author</Author>
</Book>
在c#中执行此操作的最佳方式是什么?
答案 0 :(得分:2)
1)您可以使用下面提到的方法来获取第二个xml的完整的bookdetails列表。 2)之后根据您在1st XML中的选择应用foreach循环。
public List<BookDetails> GetBookDetails()
{
XDocument xDOC = XDocument.Load("FilePath");
List<BookDetails> bookdet = (from xele in xDOC.Descendants("Book")
select new BookDetails
{
BookName = (string)xele.Element("BookName"),
Author = (string)xele.Element("Author")
}).ToList<BookDetails>();
return bookdet;
}
public class BookDetails
{
public string BookName { get; set; }
public string Author { get; set; }
}
答案 1 :(得分:1)
只需添加以下代码即可。 XDocument doc = XDocument.Load(“XMLFile1.xml”);
List<Books> a = new List<Books>();
var kitap = doc.Descendants("Author");
foreach (var item in kitap)
{
a.Add(new Books {AuthorName = item.Value, BookName = ""});
}
XDocument doc1 = XDocument.Load("XMLFile2.xml");
List<Books> b = new List<Books>();
var kitauthor = doc1.Descendants("Book").Where(i => i.Element("Author").Value == a[1].AuthorName).FirstOrDefault();
并且
public class Books
{
public string AuthorName { get; set; }
public string BookName { get; set; }
}