-4

ファイルから削除したい文字列文字 (ガベージ) を含む行を含む XML ファイルがいくつかあります。私はそれを行うことができるコードを探しています。誰かがそれを手伝ってくれますか?

<value key="EE_BELL_TIME">
  <val name="Siren Time" show="1" type="BYTE" size="8" poff="260" psize="8" pbitoff="0" />
  <posvalues>
    <pval name="1 minute" num="1" />
    zeqmmzv
    <pval name="3 minutes" num="3" />
    <pval name="4 minutes" num="4" />
    <pval name="8 minutes" num="8" />
    fmengu
    <pval name="10 minutes" num="10" />
    <pval name="15 minutes" num="15" />
    p
    <pval name="20 minutes" num="20" />
  </posvalues>
</value>
4

2 に答える 2

1

ではC#、次のように XML タグを検索するソリューションとして正規表現を使用できます。

class Program
{
    static void Main(string[] args)
    {
        // Open and read into a string the file containing the XML
        string s = System.IO.File.ReadAllText("file.xml");

        // You have too match (?>\<).*(?>\>), which also removes the line feeds
        var matches = Regex.Matches(s, @"(?>\<).*(?>\>)");

        // Use a StringBuilder to append the matches
        var sBuilder = new StringBuilder();

        // Loop through the matches
        foreach (Match item in matches)
        {
            sBuilder.Append(item.Value);
        }

        // Show the result
        Console.WriteLine(sBuilder.ToString());
    }
}
于 2013-01-31T12:31:48.057 に答える
0

あなたは非常に簡単な方法でそれを行うことができます:

 string[] lines = File.ReadAllLines(xmlPath);
 File.WriteAllLines(xmlPath, lines.Where(l => l.StartsWith("<") && l.EndsWith(">")));

これは非常に単純な解決策ですが、xml ファイルで機能するはずです。

更新コード

Encoding encoding = Encoding.GetEncoding(1252);
        string[] lines = File.ReadAllLines(xmlFile, encoding);
        List<string> result = lines.Select(line => line.TrimStart().TrimEnd()).Where(trim => trim.StartsWith("<") && trim.EndsWith(">")).ToList();
        File.WriteAllLines("XmlFile2.xml", result, encoding);

行をトリミングしないように更新します。

Encoding encoding = Encoding.GetEncoding(1252);
        string[] lines = File.ReadAllLines(xmlFile, encoding);
        List<string> result = (from line in lines let trim = line.TrimStart().TrimEnd() where trim.StartsWith("<") && trim.EndsWith(">") select line).ToList();
        File.WriteAllLines("XmlFile2.xml", result, encoding);
于 2013-01-31T12:03:54.653 に答える