对于目录中的许多xml文件,我具有相同的结构。
我想编写一个包含所需元素的csv文件。
我是这个世界的新手,请你能帮我吗?我需要递归方法吗?
我需要阅读而不是全部
<DatiBeniServizi> // Descendants
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<CodiceArticolo>
<CodiceTipo>AswArtFor</CodiceTipo> // <- i dont need this
<CodiceValore>312</CodiceValore> // <- i need only this
</CodiceArticolo>
<Descrizione>DELL LATITUDE E6440 CORE I5 4300 2.7 GHZ 8 GB RAM HD 320 DVD WIN 10 PRO GARANZIA 6 MESI</Descrizione>
<Quantita>5.00000000</Quantita>
<UnitaMisura>NR</UnitaMisura>
<PrezzoUnitario>180.00000000</PrezzoUnitario>
<PrezzoTotale>900.00000000</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N6</Natura>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<CodiceArticolo>
<CodiceTipo>AswArtFor</CodiceTipo> // <- i dont need this
<CodiceValore>499</CodiceValore> // <- i need only this
</CodiceArticolo>
<Descrizione>DELL OPTIPLEX 7010 TOWER i7-3770 3.40 GHz HD 250 GB RAM 4 GB GARANZIA 6 MESI</Descrizione>
<Quantita>3.00000000</Quantita>
<UnitaMisura>NR</UnitaMisura>
<PrezzoUnitario>160.00000000</PrezzoUnitario>
<PrezzoTotale>480.00000000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
我正在使用此代码,但我看不到孩子
var results = xDocument.Descendants("DatiBeniServizi").Select(x => new {
Codice = (string)x.Element("CodiceValore"),
Descrizione = (string)x.Element("Descrizione"),
Quantita = (string)x.Element("Quantita"),
PrezzoUnitario = (string)x.Element("PrezzoUnitario"),
AliquotaIVA = (string)x.Element("AliquotaIVA")
}).ToList();
for (int i = 0; i < results.Count; i++)
{
string tempCodice = results[i].Codice;
string tempDescrizione = results[i].Descrizione;
string tempQuantita =results[i].Quantita;
string tempprezzoUnitario = results[i].PrezzoUnitario;
string tempAliquotaIVA = results[i].AliquotaIVA;
dataToBeWritten.Append(tempCodice);
dataToBeWritten.Append(";");
dataToBeWritten.Append(tempDescrizione);
dataToBeWritten.Append(";");
dataToBeWritten.Append(tempQuantita);
dataToBeWritten.Append(";");
dataToBeWritten.Append(tempprezzoUnitario);
dataToBeWritten.Append(";");
dataToBeWritten.Append(tempAliquotaIVA);
dataToBeWritten.Append(";");
dataToBeWritten.Append(0);
dataToBeWritten.Append(";");
dataToBeWritten.Append(0);
dataToBeWritten.Append(Environment.NewLine);
}
Console.WriteLine(dataToBeWritten.ToString());
Console.ReadLine();
var testpath = AppDomain.CurrentDomain.BaseDirectory + @"\test.csv";
File.WriteAllText(testpath, dataToBeWritten.ToString());
“ Codice =(string)x.Element(” CodiceValore“),” // <-我无法阅读,我只能阅读
答案 0 :(得分:1)
这是另一种方法,但是我不知道如何使用,我知道这是荒谬的。
public function authenticateEmployee(array $data){
$email = $data['email'];
$password = $data['password'];
$user = User::where('email', '=', $email)->first(); //get db User data
if(Hash::check($password, $user->password)) {
return response()->json(['status'=>'false','message'=>'passwor is correct']);
} else {
return 'false';
}
}
答案 1 :(得分:0)
您可以使用System.Xml.XPath.Extensions中的方法执行此操作。
例如,如果要选择单个元素,则可以使用XPathSelectElement():
var element = xDocument.XPathSelectElement("/DatiBeniServizi/DettaglioLinee/CodiceArticolo/CodiceValore");
或使用您的方法-您需要设置完整路径
var results = xDocument.Descendants("DatiBeniServizi").Select(x => new {
Codice = (string)x.Elements("DettaglioLinee").Elements("CodiceArticolo").Elements("CodiceValore").FirstOrDefault()?.Value,
Descrizione = (string)x.Elements("DettaglioLinee").Elements("Descrizione").FirstOrDefault()?.Value,
Quantita = (string)x.Elements("DettaglioLinee").Elements("Quantita").FirstOrDefault()?.Value,
PrezzoUnitario = (string)x.Elements("DettaglioLinee").Elements("PrezzoUnitario").FirstOrDefault()?.Value,
AliquotaIVA = (string)x.Elements("DettaglioLinee").Elements("AliquotaIVA").FirstOrDefault()?.Value
}).ToList();