如何在这些标签<value> </value>之间删除

时间:2015-02-17 10:05:32

标签: c# tags

我问过这个问题并没有成功。我想删除值标签之间的输出,但我正在这样做。我只想删除作为我的表的数据中的值标记。能帮我删除这些值吗?请记住,那些输出不是硬编码的,用户只是输入了这些值,因此每次加载表单时我都要删除标签之间的输出。

 <data name="CurrentSelectedUser_Label" xml:space="preserve"> 
   <value>Current selected record:</value> 
   <comment>[Font]Bold[/Font][DateStamp]2015/01/01 00:00:00[/DateStamp][Comment] this is a comment.!![/Comment]</comment> 
 </data> 
 <data name="FinEnrolment_Exit_Button" xml:space="preserve"> 
   <value>Exit Finger Enrolment</value> 
   <comment>[Font]Regular[/Font][DateStamp]2014/012/01 00:00:00[/DateStamp]  [Comment] this is a comment.!![/Comment]</comment> 
  </data> 

我试过这个,但是我没有指定数据是我的表中的值标签。看下面我的编码;

    string text = File.ReadAllText(outputFilePath); 
    text = DeleteBetween1(text, "<value>", "</value>"); 

     public string DeleteBetween1(string STR, string FirstString, string LastString)
    {
        string regularExpressionPattern1 = "<value(.*?)</value>";
        Regex regex = new Regex(regularExpressionPattern1, RegexOptions.Singleline);
        MatchCollection collection = regex.Matches(STR.ToString());
        var val = string.Empty;
        foreach (Match m in collection)
        {
            val = m.Groups[1].Value;
            STR = STR.Replace(val, "");
        }
        STR = STR.Replace(val, "");
        return STR;
    }

2 个答案:

答案 0 :(得分:1)

上一个答案的应用我已经在linqpad中敲了一个测试程序来实现你想要的。 希望这种方法适合你。

我必须插入根节点或者XML不会解析,我称之为root。

void Main()
{ 
    string xml = @"
    <root>
    <data name=""CurrentSelectedUser_Label"" xml:space=""preserve""> 
       <value>Current selected record:</value> 
       <comment>[Font]Bold[/Font][DateStamp]2015/01/01 00:00:00[/DateStamp][Comment] this is a comment.!![/Comment]</comment> 
     </data> 
     <data name=""FinEnrolment_Exit_Button"" xml:space=""preserve""> 
       <value>Exit Finger Enrolment</value> 
       <comment>[Font]Regular[/Font][DateStamp]2014/012/01 00:00:00[/DateStamp]  [Comment] this is a comment.!![/Comment]</comment> 
      </data></root>";

    var doc = XDocument.Load(new StringReader(xml));

    var nodes = doc.XPathSelectElements("/root/data/value"); 


    foreach (var node in nodes)
    {
        ((XElement)node).Value = string.Empty;
    }

    ... output the doc here.
}

答案 1 :(得分:1)

使用Linq to XML

class Program
{
    static void Main(string[] args)
    {
        XDocument doc = XDocument.Load("XMLFile1.xml");

        foreach(var valueNode in doc.Descendants("data").SelectMany(n=> n.Elements("value")))
        {
            valueNode.Value = string.Empty;
        }            
    }
}