我需要找出一种使用 C# 解析 XML 文件的好方法(NULL),并将其从标签中删除,然后将其替换为单词BAD.
例如:
<GC5_(NULL) DIRTY="False"></GC5_(NULL)>
应该替换为
<GC5_BAD DIRTY="False"></GC5_BAD>
部分问题是我无法控制原始 XML,我只需要在收到它后修复它。第二个问题是(NULL)可以出现在零个、一个或多个标签中。用户是否填写其他字段似乎是一个问题。所以我可能会得到
<GC5_(NULL) DIRTY="False"></GC5_(NULL)>
或者
<MH_OTHSECTION_TXT_(NULL) DIRTY="False"></MH_OTHSECTION_TXT_(NULL)>
或者
<LCDATA_(NULL) DIRTY="False"></LCDATA_(NULL)>
我是 C# 和编程的新手。
编辑:所以我想出了以下功能,虽然不漂亮,但到目前为止工作。
public static string CleanInvalidXmlChars(string fileText)
{
List<char> charsToSubstitute = new List<char>();
charsToSubstitute.Add((char)0x19);
charsToSubstitute.Add((char)0x1C);
charsToSubstitute.Add((char)0x1D);
foreach (char c in charsToSubstitute)
fileText = fileText.Replace(Convert.ToString(c), string.Empty);
StringBuilder b = new StringBuilder(fileText);
b.Replace("�", string.Empty);
b.Replace("", string.Empty);
b.Replace("<(null)", "<BAD");
b.Replace("(null)>", "BAD>");
Regex nullMatch = new Regex("<(.+?)_\\(NULL\\)(.+?)>");
String result = nullMatch.Replace(b.ToString(), "<$1_BAD$2>");
result = result.Replace("(NULL)", "BAD");
return result;
}
我只能找到 6 或 7 个错误的 XML 文件来测试此代码,但它对每个文件都有效,并且没有删除好的数据。我感谢您的反馈和您的时间。
梦里花落0921
肥皂起泡泡
相关分类