2017-04-25 68 views
2

喜我有2個XML節點與我只需要所有從第一屬性複製到其他 '拷貝所有XML從1個節點屬性到另一個

XmlDocument doc = new XmlDocument(); 
XmlDocument doc1 = new XmlDocument(); 
doc.Load(somepath); 
XmlNode node=doc.CreateNode(System.Xml.XmlNodeType.Element, "something", null); 
System.Xml.XmlNodeList list = doc.GetElementsByTagName("tananana"); 
XmlNode node1= list[0]; 
Foreach (XmlAttribute att in node1.Attributes) 
{ 
    System.Xml.XmlAttribute rAtt= doc.CreateAttribute(att.name); //att.name is problem 
    rAtt.Value=att.Value; //att.value is problem 
    node1.Attributes.Add(rAtt); 
} 

輸入的test.xml:

<data> 
    <tananana a1="1" a2="2"/> 
    <tananana a3="3" a4="5"/> 
    <tananana a1="5" a2="7"/> 
</data> 

輸出:

<data> 
    <something a1="1" a2="2" /> 
    <something a3="3" a4="5" /> 
    <something a1="5" a2="7" /> 
</data> 
+0

什麼確切的問題?是att null?名稱爲null? – WhileTrueSleep

+0

您的代碼沒有意義,因爲'doc1'未被使用。 – Szer

+0

我已經把問題的地方的評論 – Sonja

回答

2

輸入的test.xml:

<data> 
    <tananana a1="1" a2="2"/> 
    <tananana a3="3" a4="5"/> 
    <tananana a1="5" a2="7"/> 
</data> 

輸出:

<data> 
    <something a1="1" a2="2" /> 
    <something a3="3" a4="5" /> 
    <something a1="5" a2="7" /> 
</data> 

代碼:

namespace StackOverflow 
{ 
    using System.IO; 
    using System.Linq; 
    using System.Xml.Linq; 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      var doc1 = XDocument.Load("test.xml"); 
      var doc2 = new XDocument(new XElement(doc1.Root.Name)); 

      doc2.Root.Add(doc1.Root 
       .Elements("tananana") 
       .Select(x => new XElement("something", x.Attributes()))); 
     } 
    } 
} 
+0

沒有點是完全錯誤的。下面我將添加它,因爲格式化 – Sonja

+0

輸入的test.xml的: < tananana A1 = 「5」 A2 = 「7」/> 輸出: <東西A1 = 「1」 A2 = 「2」/><東西A1 = 「3」 A2 = 「10」/><東西A1 =「5」 A2 =「7」 /> Sonja

+0

@Sonja編輯答案 – Szer

相關問題