C#从xml中删除换行符

时间:2017-04-06 10:46:41

标签: c# xml xml-parsing

我手动创建了一个xml文件(DatabaseQueries.xml),如下所示(它包含数据库查询):

<?xml version="1.0" encoding="utf-8" ?>
<Queries>
   <Query1>
            SELECT a, b
            FROM Table1
            WHERE z = 1
   </Query1>

   <Query2>
            SELECT a, b
            FROM Table2
   </Query2>
</Queries>

Xml文件包含换行符和空格。然后我在项目中添加xml文件作为资源文件,然后使用:

加载它
XElement resource = XElement.Parse(Properties.Resources.DatabaseQueries);

我想读取一个查询元素并将其转换为字符串,所以我这样做:

resource.Element("Query1").Value

但是我得到了很多空格和换行符(\ n)。不要担心空格,但我想删除\ n或从xml读取值而不包含\ n。

我使用此字符串稍后使用SqlCommand等从数据库请求值

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您可以使用正则表达式用单个空格替换换行符和重复的空格:

var query1 = Regex.Replace(resource.Element("Query1").Value.Trim(), @"\s+", " ");

来自\s Metacharacter - 空格字符可以是:

  • 空格字符
  • 制表符
  • 回车符号
  • 换行符
  • 垂直制表符

输出:

"SELECT a, b FROM Table1 WHERE z = 1"

注意!:正如@Evk所说,这种方法很简单,但它也可以修改查询中使用的字符串文字。我个人还没有看到连续包含几个空格的文字,但你应该知道这种行为。如果您希望SQL格式为100%安全,那么您应该解析给定SQL查询到某些语法树。然后将语法树转换为格式化的SQL查询。您可以使用ANTLR之类的工具,或查看一些SQL parsing samples