在XML中的特定位置插入数据

时间:2013-04-04 06:33:10

标签: c# xml string

我想读取XML文件并匹配标记</contrib-group>并在此标记后面写一个字符串

string Final = File.ReadAllText(Npath);
string Oxml = path + "\\" + Oword + ".abs.xml";
if (File.Exists(Oxml))
{
    StreamReader xml = new StreamReader(Oxml,Encoding.UTF8);
    string xmltag = xml.ReadToEnd();
    //File.OpenWrite(Oxml);
    xml.Close();
    StreamWriter write = new StreamWriter(Oxml, true, Encoding.UTF8);
    Match tag = Regex.Match(xmltag, @"</contrib-group>");
    if (tag.Success == true)
    {
        write.WriteLine(Environment.NewLine);
        write.Write(Final);

    }
}

所以我需要在匹配的XML标记Final

之后将字符串Oxml写入名为</contrib-group>的XML文件中

1 个答案:

答案 0 :(得分:0)

如果您愿意将新内容保存为可以使用的有效XML文件,则应该使用该类的XML类,这应该是这样的(未经测试):

XmlDocument doc = new XmlDocument();
doc.Load("YourFile.xml");
XmlElement root = doc.DocumentElement;
XmlNodeList elemList = root.GetElementsByTagName("contrib-group");
for (int i=0; i < elemList.Count; i++)
{       
    XmlNode xnode = elemList[i];
    XmlNode xnodeParent = xnode.ParentNode;
    XMLNode newNode = doc.CreateNode(XmlNodeType.Element, "NodeName", "");
    newNode.InnerText = "ContentInsideTheNode";
    xnodeParent.InsertAfter(newNode, xnode);
}
doc.Save("YourFile.xml");

如果您只需要将字符串替换为其他目的,而不是将其保存在有效XML不是问题的地方,您可以将其作为字符串处理并使用String.Replace (String, String)方法

string searchedTag = @"</contrib-group>";    
string tagAndNewContent = @"</contrib-group>" + newContent;
string fileContentString = File.ReadAllText("YourFile.xml");    
string ouput = fileContentString.Replace(searchedTag, tagAndNewContent);