2013-08-28 146 views
0

我有一個xml,但我不知道該如何寫這個。因爲這個XML裏面有子列表。我不知道我怎麼寫它?你能幫我解釋一下嗎?如何在xml中創建子列表

<?xml version="1.0" encoding="ISO-8859-9"?> 
<SALES_INVOICES> 
    <INVOICE DBOP="INS" > 
    <TYPE>9</TYPE>   
    <TRANSACTIONS> 
     <TRANSACTION> 
     <TYPE>4</TYPE>   
     </TRANSACTION> 
     <TRANSACTION> 
     <TYPE>4</TYPE>   
     </TRANSACTION>   
    </TRANSACTIONS> 
    <PAYMENT_LIST> 
     <PAYMENT> 
     <DATE>01.01.2013</DATE>   
     </PAYMENT> 
    </PAYMENT_LIST> 
    <AFFECT_RISK>0</AFFECT_RISK> 
    <DOC_DATE>19.03.2013</DOC_DATE> 
    <GUID></GUID> 
    <EDURATION_TYPE>0</EDURATION_TYPE> 
    <EDTCURR_GLOBAL_CODE>TL</EDTCURR_GLOBAL_CODE> 
    </INVOICE> 
</SALES_INVOICES> 

我寫代碼;

using (XmlWriter writer = XmlWriter.Create("C:\\1.xml")) 
        { 
         writer.WriteStartDocument(); 
         writer.WriteStartElement("SALES_INVOICES"); 
         writer.WriteStartElement("INVOICE"); 
         writer.WriteAttributeString("DBOP", "INS"); 
         writer.WriteStartElement("Trancastions"); 


         foreach (var transaction in orderTransactionDto) 
         { 
          writer.WriteStartElement("Trancastion"); 
          writer.WriteElementString("ID", transaction.Id.ToString()); 
          writer.WriteEndElement(); 
         } 

         writer.WriteEndElement();       
         writer.WriteEndElement(); 
         writer.WriteEndDocument(); 
        } 

我該怎麼寫這個linq到xml?

最好的問候。

+1

你是什麼意思'這個xml裏面有子列表。我不知道我怎麼寫它?'。你能澄清你的問題嗎? – DGibbs

+0

嗨。你可以看到交易節點。這個節點裏面有2個事務子節點。我不知道我該如何寫這個交易節點 –

+0

你需要研究如何使用xml編寫器編寫xml文件。這裏是一個鏈接http://www.dotnetperls.com/xmlwriter – Rex

回答

0

它不是那麼難,試試這個:

var TRANSACTIONS=new XElement("TRANSACTIONS"); 
TRANSACTIONS.Add(new XElement("TRANSACTION",new XElement("TYPE",4))); 
TRANSACTIONS.Add(new XElement("TRANSACTION",new XElement("TYPE",5))); 
TRANSACTIONS.Add(new XElement("TRANSACTION",new XElement("TYPE",6))); 
+0

我怎麼能在交易節點下添加一個或多個交易。我怎麼可以看看你的代碼?TRANSACTIONS.Add(new XElement(「TRANSACTION」,new XElement(「TYPE」,4))); –

+0

只是看到我的更新。 –

+0

你能看到我的第一篇文章更新嗎?我寫代碼,但我怎麼能寫這個代碼linq-xml? –

0

您需要選擇從XML中TRANSACTIONS節點。創建子節點TRANSACTION並設置子節點TYPE的值。你可以這樣做LINQ to XML

//Load the doc 
XDocument xml = XDocument.Load(HttpContext.Current.Server.MapPath("your xml file...")); 

//Get the transactions node 
var transactionsNode = xml.Descendants().Elements("TRANSACTIONS").SingleOrDefault(); 

//Create a child transaction node 
XElement elem = new XElement("TRANSACTION"); 

//Create a child type node and set its value to 200 
elem.SetElementValue("TYPE", 200); 

//Append this to the parent transactions node 
transactionsNode.Add(elem); 

//Save the XML back to file 
xml.Save(HttpContext.Current.Server.MapPath("your xml file...");