第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 linq 在 C# 中將 XML 解析為 CSV

使用 linq 在 C# 中將 XML 解析為 CSV

C#
慕無忌1623718 2023-09-16 17:36:38
我正在嘗試將 xml 文件的屬性解析為 csv 文件,代碼檢查并運行時沒有錯誤,并且生成了輸出 CSV 文件,但不包含任何數據我認為問題可能在于元素的附加,因為當我嘗試將另一個聲明的字符串附加到字符串生成器時,它仍然沒有打印出任何內容。我也嘗試過更改后代,以防萬一這里出現錯誤,但似乎沒有任何效果using System;using System.Linq;using System.Xml.Linq;using System.IO;using System.Text;namespace Test{    class Program    {        public static void Main()        {            StringBuilder sb = new StringBuilder();            string delimiter = ",";            XDocument.Load(@"C:\Users\livingss\Desktop\XML - CSV\xml\Xml\----------.xml").Descendants("Param").ToList().ForEach(                element => sb.Append(element.Attribute("Name").Value                + delimiter                + element.Attribute("PNum").Value                + "\r\n"));            Console.WriteLine(sb);            StreamWriter sw = new StreamWriter(@"C:\Users\livingss\Desktop\XML - CSV\Result.csv");            sw.WriteLine(sb.ToString());            sw.Close();        }    }}<?xml version="1.0" encoding="utf-8"?><Equipment EType="0000" Name="PlaceHolder" Version="$Revision: 2$" xmlns="urn:equipment-type">    <EqAttributes />    <EqVariant />    <EqModules />    <EqLogging />    <EqParameters>        <Param Name="Not Used" PNum="1">            <Desc>Spare</Desc>        </Param>        <Param Name="Equipment Status" PNum="2" Min="0" Max="8" Un="1">            <vMap>                <Opt Name="Stopped">0</Opt>                <Opt Name="Starting">1</Opt>                <Opt Name="Running">2</Opt>                <Opt Name="Stopping">3</Opt>                <Opt Name="Standby">4</Opt>                <Opt Name="Idle">5</Opt>                <Opt Name="Sleep">6</Opt>                <Opt Name="Hibernate">7</Opt>                <Opt Name="Faulted">8</Opt>            </vMap>        </Param>        <Param Name="Not Used" PNum="3" Min="0" Max="5" Un="3">            <Desc>Spare</Desc>        </Param>    </EqParameters>    <EqConfiguration>    </EqConfiguration></Equipment>預期輸出應該是 Param 的屬性,即“Name”和“PNum”,第一行的輸出應該是“NotUsed,1”
查看完整描述

3 回答

?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

您應該添加命名空間并在Descendants調用中使用它:

XNamespace urn="urn:equipment-type";     

XDocument.Load(filePath).Descendants(urn + "Param").ToList().ForEach(...

如果沒有名稱空間,我也無法枚舉任何結果。


查看完整回答
反對 回復 2023-09-16
?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

對我來說,問題在于你編寫文件的方式。嘗試替換它:

 StreamWriter sw = new StreamWriter(@"C:\Users\livingss\Desktop\XML - CSV\Result.csv");
 sw.WriteLine(sb.ToString());
 sw.Close();

接著就,隨即:

 var path = @"C:\Users\livingss\Desktop\XML - CSV\Result.csv";
 File.WriteAllText(path, sb.ToString());


查看完整回答
反對 回復 2023-09-16
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

就這樣吧!


StringBuilder sb = new StringBuilder();

string delimiter = ",";


XmlDocument doc = new XmlDocument();

doc.Load(@"file.xml");

var paramElements = doc.GetElementsByTagName("Param");

for (int i = 0; i < paramElements.Count; i++)

{

    var currentElt = paramElements.Item(i);

    sb.Append(currentElt.Attributes.GetNamedItem("Name").Value);

    sb.Append(delimiter);

    sb.Append(currentElt.Attributes.GetNamedItem("PNum").Value);

    sb.AppendLine();

}


var path = @"Result.csv";

File.WriteAllText(path, sb.ToString());


查看完整回答
反對 回復 2023-09-16
  • 3 回答
  • 0 關注
  • 166 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號