C# 如何使用C在现有XML文件中删除声明并添加根元素
我对XML和C相当陌生,所以如果这个问题问起来太愚蠢,请理解 我正在使用C win表单应用程序转换XML格式。 该应用程序使用“OpenFileDialog”打开一个xml文件,然后将执行转换。这已经完成,但我仍然需要添加或删除一些类似下面的内容。 转换后,应用程序将使用“SaveFileDialog”保存修改后的xml文件 原始XML格式C# 如何使用C在现有XML文件中删除声明并添加根元素,c#,xml,root,declaration,C#,Xml,Root,Declaration,我对XML和C相当陌生,所以如果这个问题问起来太愚蠢,请理解 我正在使用C win表单应用程序转换XML格式。 该应用程序使用“OpenFileDialog”打开一个xml文件,然后将执行转换。这已经完成,但我仍然需要添加或删除一些类似下面的内容。 转换后,应用程序将使用“SaveFileDialog”保存修改后的xml文件 原始XML格式 <?xml version="1.0" encoding="utf-8" ?> <DataList> <Dat
<?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文件上添加根元素?提前感谢您。只需将xml作为字符串并使用它即可!要删除标题,可以使用替换功能!要添加根元素,只需添加到xml字符串的开头和结尾
要转换为字符串,可以使用XDocument.ToString,这是您的XML结构吗?还是注定要改变 查看我的解析方法:
var xDoc = XDocument.Load(openFileDialog1.FileName);
//Use code below if you'll use string to Load XDocument
/*var xmlString = @"<?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>
";
var xDoc = XDocument.Parse(xmlString);*/
var dataList = xDoc.Descendants(@"Data");
var newXDoc = new XDocument(new XDeclaration(null, null, null),
new XElement("MainInterface",
new XElement("DataList",
dataList.Select(data =>
new XElement("Data",
data.Element("ID"),
data.Element("Name"),
data.Element("Age")
)
)
)
)
);
请参阅,以获取我与LINQPad的XML转储。这应该可以回答您的问题:
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);
var xDoc = XDocument.Load(openFileDialog1.FileName);
//Use code below if you'll use string to Load XDocument
/*var xmlString = @"<?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>
";
var xDoc = XDocument.Parse(xmlString);*/
var dataList = xDoc.Descendants(@"Data");
var newXDoc = new XDocument(new XDeclaration(null, null, null),
new XElement("MainInterface",
new XElement("DataList",
dataList.Select(data =>
new XElement("Data",
data.Element("ID"),
data.Element("Name"),
data.Element("Age")
)
)
)
)
);