如何使用C#从文本文件中存储的以下字符串中删除">" and "<"
,">" and "</"
之间的空格,制表符,新行号以及<wiretype />
之间的空格?
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetReport xmlns="http://tempuri.org/">
<RequestContext xmlns="">
<userid>reds</userid><fcnumber>1</fcnumber><accountaccess /><wiretype /><currency /><accountheader>All</accountheader><clientname>Begum Noor</clientname><requestid>9999</requestid><ntid>reds</ntid>
</RequestContext>
<ReportParams>xyz</ReportParams>
</GetReport>
</soap:Body>
</soap:Envelope>
我尝试了以下操作,但没有删除所有空格:
static void Main(string[] args)
{
string filename = args[0];
StringBuilder result = new StringBuilder();
if (System.IO.File.Exists(filename))
{
using (StreamReader streamReader = new StreamReader(filename))
{
String line;
Regex r = new Regex(@">\s+<");
while ((line = streamReader.ReadLine()) != null)
{
string newLine = r.Replace(line, @"><");
result.Append(newLine);
}
}
}
Console.WriteLine(result);
Console.ReadLine();
using (FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate))
{
StreamWriter streamWriter = new StreamWriter(fileStream);
streamWriter.Write(result);
streamWriter.Close();
fileStream.Close();
}
}
答案 0 :(得分:7)
你为什么不用:
XDocument xdoc = XDocument.Load(filename);
xdoc.Save(filename, SaveOptions.DisableFormatting);
它将删除xml
文档中的所有格式。有关详细信息,请参阅SaveOptions.DisableFormatting
。
答案 1 :(得分:0)
我猜您最好的方法是获取<
和/>
之间的所有信息。
<[^>]*/>
然后,您可以使用替换所有语言来替换xml的匹配部分。
( |\n|\t) to be replaced by ""