我手动创建了一个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等从数据库请求值
我该怎么做?
答案 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。