0
我想在这个XML片段中读取并更改attr2的名称和值,并保持其他所有方式。只是想读取XML片段,并改变一些东西
如何在下面的else子句中按原样读取和写入其他元素?另外,如果有更好的方法来做到这一点,我欢迎这样的想法!
string xmlFragment = @"
<blah>...</blah>
<more attr='blah' />
<fragment attr1='value1' />
<fragment attr2='value2' attr3='value3' />
";
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
using (XmlReader reader = XmlReader.Create(new StringReader(xmlFragment), settings))
using (var stream = new MemoryStream())
{
var sw = new StreamWriter(stream);
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name == "fragment")
{
if (reader.GetAttribute("attr2") != null)
{
//change this element
string test = reader.GetAttribute("attr2");
sw.Write("<fragment attr2Upd='value2Upd' attr3='value3' />");
}
}
else
{
//copy the element the way it is.
//how do I copy the current element to StreamWriter as-is
}
}
sw.Flush();
stream.Position = 0;
using (var streamReader = new StreamReader(stream))
{
string test = streamReader.ReadToEnd();
}
}