我有這段代碼:當我執行查詢以在 xml 檔案中列印一個欄位時,我想這樣做。
我的意思是只列印欄位“名稱”
我怎樣才能做到這一點?
謝謝
C#:
private void button1_Click(object sender, EventArgs e)
{
var name = textBox3.Text;
XDocument doc = XDocument.Load(@"data.xml");
var xpath = "//*[text()= ' " name "']";
var result = ((IEnumerable)doc.XPathEvaluate(xpath)).Cast<XElement>().FirstOrDefault();
var storeElement = doc.Descendants("store").Where(e => e.Attribute("rollNumer").Value == name).First();
textBox1.Text = storeElement.Value;
}
XML:
<?xml version="1.0" encoding="utf-8" ?>
<stores>
<store rollNumer="170">
<Name>Jonh</Name>
<Color>Pink</Color>
<Sell>Sugar</Sell>
</store>
<store rollNumer="120">
<Name>Tedy</Name>
<Color>Brown</Color>
<Sell>Rice</Sell>
</store>
</stores>
uj5u.com熱心網友回復:
請嘗試以下解決方案。
對于您的實際情況,只需取消注釋該.Load()方法,然后注釋掉該.Parse()方法。
C#
void Main()
{
const string inputFile = @"e:\Temp\data.xml";
//XDocument xdoc = XDocument.Load(inputFile);
XDocument xdoc = XDocument.Parse(@"<stores>
<store rollNumer='170'>
<Name>Jonh</Name>
<Color>Pink</Color>
<Sell>Sugar</Sell>
</store>
<store rollNumer='120'>
<Name>Tedy</Name>
<Color>Brown</Color>
<Sell>Rice</Sell>
</store>
</stores>");
XElement helem = xdoc.Descendants("Name").FirstOrDefault();
string output = helem .Value;
}
uj5u.com熱心網友回復:
希望能幫到你
XDocument doc = XDocument.Load(inputFile);
string storeElement = string.Empty;
foreach (var item in doc.Descendants("store"))
{
if (item.Attribute("rollNumer").Value == name)
{
storeElement = item.Descendants("Name").First().Value;
}
}
uj5u.com熱心網友回復:
我認為根據您要解決的問題創建類來表示您的資料會更好。之后,一旦你將它加載到你的程式中,你就可以根據你正在處理的問題來考慮它,這會更容易,因為在這種情況下你抽象了關于 xml 的低級細節。
public class DataExtractor
{
public string GetPropertyValue(string rollNumber)
{
var filename = "InputData.xml";
XmlSerializer serializer =
new XmlSerializer(typeof(stores));
stores data;
using (Stream reader = new FileStream(filename, FileMode.Open))
{
data = (stores)serializer.Deserialize(reader);
}
var result = data.store.Where(s => s.rollNumer.Equals(rollNumber)).Select(n => n.Name).FirstOrDefault();
return result;
}
}
[Serializable()]
[System.ComponentModel.DesignerCategory("code")]
[XmlType(AnonymousType = true)]
[XmlRoot(Namespace = "", IsNullable = false)]
public partial class stores
{
private storesStore[] storeField;
/// <remarks/>
[XmlElement("store")]
public storesStore[] store
{
get
{
return this.storeField;
}
set
{
this.storeField = value;
}
}
}
/// <remarks/>
[Serializable()]
[System.ComponentModel.DesignerCategory("code")]
[XmlType(AnonymousType = true)]
public partial class storesStore
{
private string nameField;
private string colorField;
private string sellField;
private string rollNumerField;
/// <remarks/>
public string Name
{
get
{
return this.nameField;
}
set
{
this.nameField = value;
}
}
/// <remarks/>
public string Color
{
get
{
return this.colorField;
}
set
{
this.colorField = value;
}
}
/// <remarks/>
public string Sell
{
get
{
return this.sellField;
}
set
{
this.sellField = value;
}
}
/// <remarks/>
[XmlAttribute()]
public string rollNumer
{
get
{
return this.rollNumerField;
}
set
{
this.rollNumerField = value;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/482862.html
上一篇:委托和等待任務
