gpt4 book ai didi

c# - 如何在现有 XML 文件中删除声明和添加根元素 (C#)

转载 作者:行者123 更新时间:2023-11-30 20:58:13 24 4
gpt4 key购买 nike

我是 XML 和 C# 的新手,所以如果这个问题太愚蠢而无法提出,请理解。

我正在使用 C# win-form 应用程序转换 XML 格式。该应用程序使用 OpenFileDialog 打开一个 xml 文件,然后将执行转换(这已经完成,但我仍然需要添加或删除一些,如下所示)。转换后,应用程序将使用 SaveFileDialog 保存修改后的 xml 文件。

原始 XML 格式

<?xml version="1.0" encoding="utf-8" ?> 
<DataList>
<Data>
<ID>1</ID>
<Name>Mike</Name>
<Age>23</Age>
</Data>
<Data>
<ID>1</ID>
<Name>Mike</Name>
<Age>23</Age>
</Data>
<Data>
<ID>1</ID>
<Name>Mike</Name>
<Age>23</Age>
</Data>
..<Data></Data> continued...
</DataList>

我想按如下方式编辑 XML 文件

<?xml version="1.0" encoding="utf-8" ?> **→ Remove this delaration!**
<MainInterface> **→ Add 'root element' before existing nodes**
<DataList>
<Data>
<ID>1</ID>
<Name>Mike</Name>
<Age>23</Age>
</Data>
<Data>
<ID>1</ID>
<Name>Mike</Name>
<Age>23</Age>
</Data>
<Data>
<ID>1</ID>
<Name>Mike</Name>
<Age>23</Age>
</Data>
..<Data></Data> continued...
</DataList>
</MainInterface> **→ close newly added root element**

我试过下面的代码,但似乎不起作用

OpenFileDialog openFileDialogue = new OpenFileDialog();           
openFileDialog1.DefaultExt = "xml";
openFileDialog1.Filter = "xml files (*.xml)|*.xml";
openFileDialog1.Title = "Select a xml File";
openFileDialog1.ShowDialog();

XDocument xmlFile = XDocument.Load(openFileDialog1.FileName);
**// Remove Declaration**
XDocument doc = new XDocument(new XDeclaration(null, null, null));

**// Add Root Element**
XElement doc1 = XElement.Parse(openFileDialog1.FileName);
XElement root = new XElement("MainInterface", doc1);
//doc.Save(_data)
openFileDialog1.FileName = root.ToString();

-----------------------------------------------------------------------------------
Do something for conversion ~~~
-----------------------------------------------------------------------------------
SaveFileDialog saveFileDialogue1 = new SaveFileDialog();
saveFileDialog1.Filter = "xml File |*.xml";
saveFileDialog1.Title = "Conversion Completed! Save a XML file";
saveFileDialog1.FileName = "XML Converted.xml";
saveFileDialog1.ShowDialog();
xmlFile.Save(saveFileDialog1.FileName);

重点是我不是在创建新的 XML 文件,而是修改现有的 xml 文件以删除声明并添加根元素。我应该使用 XML Writer 吗?有没有更简单的方法来做这些?提前谢谢你。

感谢您的回答。我发现这对我有用!

SaveFileDialog saveFileDialogue1 = new SaveFileDialog();
saveFileDialog1.Filter = "xml File |*.xml";
saveFileDialog1.Title = "Conversion Completed! Save a XML file";
saveFileDialog1.FileName = "XML Converted.xml";
saveFileDialog1.ShowDialog();

XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
StringWriter sw = new StringWriter();
using (XmlWriter xw = XmlWriter.Create(saveFileDialog1.FileName, settings))
{
xmlFile.Save(xw);
}
string s = sw.ToString();

最佳答案

我会创建一个新的 XDocument,但只是将它保存在旧的之上:

// You don't want XElement.Parse here - that treats the filename as the
// XML itself!
XDocument oldDocument = XDocument.Load(openFileDialog1.FileName);
XDocument newDocument = new XDocument(new XElement("MainInterface",
oldDocument.Root));
newDocument.Save(saveFileDialog1.FileName);

关于c# - 如何在现有 XML 文件中删除声明和添加根元素 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16278880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com