以下是我的xml:
<settings>
<Element Name="a" Attribute="b" />
<Element Name="b" Attribute="c" />
</settings>这是我的密码:
const string SettingsFileName = "settings.xml";
XmlDocument xmlDocument = new XmlDocument();
const string RootNode = "settings";
const string elementName = "Element";
const string attributeName = "Name";
const string attributeValue = "b";
xmlDocument.Load(SettingsFileName);
XElement xElement = XElement.Load(new XmlNodeReader(xmlDocument));
var entry = from element in xElement.Elements(elementName)
where (string)element.Attribute(attributeName) == attributeValue
select element;
string[] values = { "Attribute", "d" };
xElement = entry.First<XElement>();
for (int i = 0; i < values.Length; i++)
{
string name = values[i++];
string value = "";
if (i < values.Length)
value = values[i];
xElement.Attribute(name).Value=value;
}我想使用xmlDocument更新XElement,最好不用XDocument。我好像错过了一步,因为这做不到:
xmlDocument.Save(SettingsFileName);这有可能吗?如果有,怎么做?
发布于 2016-05-24 15:10:44
弄明白了。以下是解决办法:
const string SettingsFileName = "settings.xml";
XmlDocument xmlDocument = new XmlDocument();
const string RootNode = "settings";
const string elementName = "Element";
const string attributeName = "Name";
const string attributeValue = "b";
xmlDocument.Load(SettingsFileName);
XElement xElement = XElement.Load(new XmlNodeReader(xmlDocument));
var entry = from element in xElement.Elements(elementName)
where (string)element.Attribute(attributeName) == attributeValue
select element;
string[] values = { "Attribute", "d" };
XElement xElement0 = entry.First<XElement>();
for (int i = 0; i < values.Length; i++)
{
string name = values[i++];
string value = "";
if (i < values.Length)
value = values[i];
xElement0.Attribute(name).Value=value;
}
xmlDocument.LoadXml(xElement.ToString());
xmlDocument.Save(SettingsFileName);发布于 2016-05-24 15:32:08
我不是真的跟着“为什么”在这里。你做的事看起来很疯狂。只要坚持使用XDocument
var doc = XDocument.Load(SettingsFileName);
var attribute = doc
.Descendants("Element")
.Attributes("Attribute")
.Single(x => x.Value == "b");
attribute.Value = "d";
doc.Save(SettingsFileName);https://stackoverflow.com/questions/37416678
复制相似问题