我有代碼,我添加新的節點到一個XML文件,它的工作原理是完美的,但有一個問題,當我保存更改添加更改xml文件的原始結構。如何在不丟失原始結構的情況下添加XML節點?
原來的文件有一個完整的一行或一排像這樣每個節點:
<DATA>
<ROW><mk v = "2801"/><gd v = "170300"/><wn v = "00Y6354"/><bn v = ""/></ROW>
<ROW><mk v = "2801"/><gd v = "170301"/><wn v = "00Y6355"/><bn v = ""/></ROW>
<ROW><mk v = "2801"/><gd v = "170302"/><wn v = "00Y6356"/><bn v = ""/></ROW>
</DATA>
但添加新節點並保存更改後,結構是這樣的:
<DATA>
<ROW>
<mk v = "2801"/>
<gd v = "170300"/>
<wn v = "00Y6354"/>
<bn v = ""/>
</ROW>
<ROW>
<mk v = "2801"/>
<gd v = "170301"/>
<wn v = "00Y6355"/>
<bn v = ""/>
</ROW>
<ROW>
<mk v = "2801"/>
<gd v = "170302"/>
<wn v = "00Y6356"/>
<bn v = ""/>
</ROW>
<ROW>
<mk v = "2341"/>
<gd v = "170342"/>
<wn v = "00Y9872"/>
<bn v = "new node"/>
</ROW>
</DATA>
我已經試圖找到像第一個結構一樣的FINAL OUTPUT的例子,但沒有。所以有可能保存更改而不改變原來的結構有人告訴我請!
我的代碼是這樣的:
public void CreateXML(string[] ipRow, string ipFile)
{
XmlDocument doc = new XmlDocument();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(ipFile);
for (int j = 0; j < ipRow.Length; j++)
{
doc.LoadXml(ipRow[j]);
XmlNode newNode = doc.DocumentElement;
XmlNode copiedNode = xmlDoc.ImportNode(newNode, true);
xmlDoc.DocumentElement.LastChild.AppendChild(copiedNode);
}
xmlDoc.Save(ipFile);
}
我只是想申請某種形式的,或者至少表明該方案尊重的什麼已經是該文件的內部原有結構。 我發現論壇,他們說你可以使用StringBuilders,XmlWriterSettings和東西,但不起作用,正如你所看到的,新節點來自一個字符串,所以,我不能改變方式新節點已創建,代碼必須保持原樣,並且只需添加規則即可保留原始格式。
或者如果有人知道在Visual Studio 2008上用C#做這件事是不可能的,那就告訴我(我只會信任明顯的專家用戶)。
請回復!謝謝。
可能的重複http://stackoverflow.com/questions/8589592/preserve-xml-formatting-using-xmldocument – jpe
我已經嘗試了preservewhitespace的東西,它不起作用,結果是someting像這樣:|
|
只有一行A LL XML代碼,我不是那個 –
爲什麼你需要這種特殊的格式?格式在XML文件中非常重要。 – JcFx