亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何使用LINQ-to-XML生成順序屬性值?

如何使用LINQ-to-XML生成順序屬性值?

C#
catspeake 2021-04-09 17:14:11
我有一些xml文件,格式如下所示,或者可能略有不同<?xml version="1.0"?><!DOCTYPE PARTS SYSTEM "parts.dtd"><?xml-stylesheet type="text/css" href="xmlpartsstyle.css"?><PARTS>    <TITLE>Computer Parts</TITLE>    <ASST>        <PART no="xs@@">            <ITEM>Motherboard</ITEM>            <MANUFACTURER>ASUS</MANUFACTURER>            <MODEL ver="v-@@@@">P3B-F</MODEL>            <COST>123.00</COST>        </PART>        <PART no="xs@@">            <ITEM>Video Card</ITEM>            <MANUFACTURER>ATI</MANUFACTURER>            <MODEL ver="v-@@@@">All-in-Wonder Pro</MODEL>            <COST>160.00</COST>        </PART>        <PART no="xs@@">            <ITEM>Sound Card</ITEM>            <MANUFACTURER>Creative Labs</MANUFACTURER>            <MODEL ver="v-@@@@">Sound Blaster Live</MODEL>            <COST>80.00</COST>        </PART>    </ASST></PARTS>我試圖產生節點的屬性值<PART>即沒有和<MODEL>即版本以順序方式從值1開始,然后通過1從下一遞增<PART>節點。因此,基本上所需的輸出應如下所示<?xml version="1.0"?><!DOCTYPE PARTS SYSTEM "parts.dtd"><?xml-stylesheet type="text/css" href="xmlpartsstyle.css"?><PARTS>    <TITLE>Computer Parts</TITLE>    <ASST>        <PART no="xs1">            <ITEM>Motherboard</ITEM>            <MANUFACTURER>ASUS</MANUFACTURER>            <MODEL ver="v-1">P3B-F</MODEL>            <COST>123.00</COST>        </PART>        <PART no="xs2">            <ITEM>Video Card</ITEM>            <MANUFACTURER>ATI</MANUFACTURER>            <MODEL ver="v-2">All-in-Wonder Pro</MODEL>            <COST>160.00</COST>        </PART>        <PART no="xs3">            <ITEM>Sound Card</ITEM>            <MANUFACTURER>Creative Labs</MANUFACTURER>            <MODEL ver="v-3">Sound Blaster Live</MODEL>            <COST>80.00</COST>        </PART>    </ASST></PARTS>那么,使用LINQ-to-XML做到這一點的最簡單方法是什么?
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

您沒有明顯的原因就擁有嵌套循環……您要為每個元素多次設置屬性,而不是為每個元素設置一次屬性。


一旦擺脫了嵌套循環,就很簡單了。但是,如果您將查詢具體化為列表,則更為簡單。這是產生所需輸出的完整示例:


using System;

using System.Linq;

using System.Xml.Linq;


class Test

{

    static void Main()

    {

        var xml = XDocument.Load("input.xml");

        var parts = xml.Descendants("PART").ToList();

        var models = xml.Descendants("PART").Elements("MODEL").ToList();


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

        {

            parts[i].Attribute("no").Value = $"xs{i+1}";

        }


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

        {

            models[i].Attribute("ver").Value = $"v-{i+1}";

        }


        xml.Save("output.xml");

    }

}


查看完整回答
反對 回復 2021-04-17
  • 1 回答
  • 0 關注
  • 176 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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