我是.net中的xml新手,我有这个要求,我需要在xml文件中搜索。例如,我有这个xml文件。
<?xml version="1.0" encoding="utf-8"?>
<Books>
<Book>
<Title>Sample book1</Title>
</Book>
<Book>
<Title>Sample book2</Title>
</Book>
<Book>
<Title>Another book</Title>
例如,我使用“sample”作为搜索键,因此输出将为Sample book1和Sample book2。如果我使用“book”作为搜索键,输出将是Sample book1,Sample book2和Another book。
基于我现在所拥有的,似乎不可能。
Dim xmlDocument As New XmlDocument()
Dim _xmlDataSource As New XmlDataSource
xmlDocument.Load(Server.MapPath("XML/Books.xml"))
Dim node = xmlDocument.DocumentElement.SelectSingleNode("./Books/Book[@title='SearchKey']")
这可能在.net中吗?您是否可以根据要求查看我的xml文件格式是否正确。
提前致谢
答案 0 :(得分:1)
我可以给你看例子(你可以使用linq问题)这是我的旧项目:
var billings =来自billingData.Element(“ubrania”)中的damskie。元素(“damska”)。元素(“pm”)。后代(“item”) 选择新的dane_xml_panel((int)damskie.Element(“id”));
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Xml.Linq;
namespace sklep_internetowy_MVC.Models
{
public class pobierane_dane_xml
{
private List<dane_xml_panel> allBillings;
private XDocument billingData;
// constructor
public pobierane_dane_xml()
{
allBillings = new List<dane_xml_panel>();
billingData = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/dane.xml"));
var billings = from damskie in billingData.Element("ubrania").Element("damska").Element("pm").Descendants("item")
select new dane_xml_panel((int)damskie.Element("id"));
allBillings.AddRange(billings.ToList<dane_xml_panel>());
}
// return a list of all billings
public IEnumerable<dane_xml_panel> GetBillings()
{
return allBillings;
}
public dane_xml_panel GetBillingByID(int id)
{
return allBillings.Find(item => item.ID == id);
}
// Insert Record
public void InsertBilling(dane_xml_panel billing)
{
billing.ID = (int)(from b in billingData.Descendants("item") orderby (int)b.Element("id") descending select (int)b.Element("id")).FirstOrDefault() + 1;
billingData.Root.Add(new XElement("item", new XElement("id", billing.ID)));
billingData.Save(HttpContext.Current.Server.MapPath("~/App_Data/dane.xml"));
}
// Delete Record
public void DeleteBilling(int id)
{
billingData.Root.Elements("item").Where(i => (int)i.Element("id") == id).Remove();
billingData.Save(HttpContext.Current.Server.MapPath("~/App_Data/dane.xml"));
}
// Edit Record
public void EditBilling(dane_xml_panel billing)
{
XElement node = billingData.Root.Elements("item").Where(i => (int)i.Element("id") == billing.ID).FirstOrDefault();
billingData.Save(HttpContext.Current.Server.MapPath("~/App_Data/dane.xml"));
}
}
}
类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace sklep_internetowy_MVC.Models
{
public class dane_xml_panel
{
public dane_xml_panel()
{
this.ID = 0;
}
public dane_xml_panel(int id)
{
this.ID = id;
}
public int ID { get; set; }
}
}
在这里你有xml文件(dane xml):
<?xml version="1.0" encoding="utf-8"?>
<ubrania>
<damska>
<nk id="Nowa Kolekcja">
<item>
<id>1</id>
</item>
<item>
<id>2</id>
</item>
</nk>
<pm id="Nowosci">
<item>
<id>3</id>
</item>
<item>
<id>4</id>
</item>
</pm>
</damska>
</ubrania>