我需要读取一个不符合xml规则的xml文件。所以我需要在我将其作为xml文件读取之前做好。存在像“&”这样的符号en“<”元素之间。
<MAT>
<MATERIAL><MATNR>2286303</MATNR><BESTELTXT>Parts for something & something else</BESTELTXT><WERKS>Material exist out of<1 something</WERKS>
</MAT>
现在我有了这个:
我在文件中读到然后我这样做
text = Regex.Replace(text, @"\s&\s", " & ");
text = Regex.Replace(text, @"[<]\d+", "<");
之后我将文本写入文件,我将其作为xml读入。
“&lt;”的问题是它正在删除数字,我需要保持。另外我不知道这是否有良好的表现?这也适用于verry大文件吗?它也只适用于这种情况,但如果我们将来有更多案例呢?是否有将这些预定义实体更改为其xml格式的一般方法?
ps:我知道这应该在制作xml文件时处理,但它来自一个thirth派对而且他们无法改变它。
答案 0 :(得分:1)
你应该试试这个
text = Regex.Replace(text, @"(\s+)&(\s+)", "$1&$2");
text = Regex.Replace(text, @"[<](\d+)", "<$1");
\d+
更改为(\d+)
,我可以使用$1
包含所选数字的值,同样适用于\ s +,如果你有更多超过一个选定的组,订单将是$ 1,$ 2等。RegexOptions.Compiled
添加到正则表达式中,例如text = Regex.Replace(text, @"(\s+)&(\s+)", "$1&$2",RegexOptions.Compiled);
此外,如果您想要更改所有&
,则必须删除(\s+)