您好我正在处理XML文件,在这里我想授权用户将我的xml文件节点编辑为他自己的自定义语言。
我附上我的代码,但它没有编辑我的xml文件。需要帮助。
class Program
{
static void Main(string[] args)
{
//The Path to the xml file
string path = "D://Documents and Settings//Umaid//My Documents//Visual Studio 2008//Projects//EditXML//EditXML//testing.xml";
//Create FileStream fs
System.IO.FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
//Create new XmlDocument
System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
//Load the contents of the filestream into the XmlDocument (xmldoc)
xmldoc.Load(fs);
//close the fs filestream
fs.Close();
//Change the contents of the attribute
xmldoc.DocumentElement.ChildNodes[0].Attributes[0].InnerText = "Umaid";
// Create the filestream for saving
FileStream WRITER = new FileStream(path, FileMode.Truncate, FileAccess.Write, FileShare.ReadWrite);
// Save the xmldocument
xmldoc.Save(WRITER);
//Close the writer filestream
WRITER.Close();
}
}
我要编辑的XML文件,但不能。
<?xml version="1.0" encoding="utf-8" ?>
<rule id="city" scope="public">
<one-of>
<item>Boston</item>
</one-of>
</rule>
答案 0 :(得分:1)
你真的想用你的XML做什么?你要改变哪个属性??
一个提示:您可以直接将XmlDocument加载并保存到路径中 - 不需要文件流.....
xmldoc.Load(@"D:\yourpath\file.xml");
xmldoc.Save(@"D:\yourpath\newfile.xml");
问题是你的表达式xmldoc.DocumentElement.ChildNodes[0]
选择了没有属性的<one-of>
节点。
您无法更改不存在的属性。
如果要更改<rule>
的“id”属性,则需要在DocumentElement上执行此操作:
xmldoc.DocumentElement.Attributes["id"].Value = "Umaid";
如果您想更改<item>
内的文字,请执行以下操作:
XmlNode itemNode = xmldoc.SelectSingleNode("/rule/one-of/item");
if(itemNode != null)
{
itemNode.InnerText = "Umaid";
}
马克
答案 1 :(得分:0)
class Program
{
static void Main(string[] args)
{
string path = "D:\\Documents and Settings\\Umaid\\My Documents\\Visual Studio 2008\\Projects\\EditXML\\EditXML\\testing.xml";
XmlDocument doc = new XmlDocument();
doc.Load(path);
var itemNode = doc.SelectSingleNode("rule/one-of/item");
if (itemNode != null)
{
itemNode.InnerText = "Umaid";
}
doc.Save(path);
}
}