C# 与Linq一起转义和双引号
我正在编写一小段代码,在其中查找包含文件夹名=\u的XML中的所有节点。 我对字符串文字有问题,我尝试使用@和转义或双引号,但没有成功。代码如下:C# 与Linq一起转义和双引号,c#,string,escaping,literals,double-quotes,C#,String,Escaping,Literals,Double Quotes,我正在编写一小段代码,在其中查找包含文件夹名=\u的XML中的所有节点。 我对字符串文字有问题,我尝试使用@和转义或双引号,但没有成功。代码如下: public class Folders { public static IEnumerable<string> FolderNames(string xml, char startingLetter) { string[] MyString; List<string> MyList = new List&
public class Folders
{
public static IEnumerable<string> FolderNames(string xml, char startingLetter)
{
string[] MyString;
List<string> MyList = new List<string>();
string item = "";
StringSplitOptions.None)).ToList();
MyString = xml.Split('>') ;
var matchingvalues = MyString
.Where(stringToCheck => stringToCheck.Contains("<folder name=\\\""));
return matchingvalues;
}
public static void Main(string[] args)
{
string xml =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<folder name=\"c\">" +
"<folder name=\"program files\">" +
"<folder name=\"uninstall information\" />" +
"</folder>" +
"<folder name=\"users\" />" +
"</folder>";
foreach (string name in Folders.FolderNames(xml, 'u'))
Console.WriteLine(name);
Console.ReadLine();
}
我该怎么写
var matchingvalues=MyString.WherestringToCheck=>stringToCheck.Contains
?
您甚至没有在FolderNames中使用startingLetter参数
您说您正在查找文件夹名=\u,但代码查找的是,主要问题并不是转义。 但事实上你重新发明了轮子 c语言中有多个xml解析器 Linq到xml就是其中之一。有了它,你可以写一些简单的东西,比如:
string xml =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<folder name=\"c\">" +
"<folder name=\"program files\">" +
"<folder name=\"uninstall information\" />" +
"</folder>" +
"<folder name=\"users\" />" +
"</folder>";
XElement xElement = XElement.Parse(xml);
IEnumerable<string> values = xElement.
Descendants("folder").
Where(element => element.Attribute("name")?.Value?.StartsWith("u") == true).
Select(element => element.Attribute("name").Value);
string xml =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<folder name=\"c\">" +
"<folder name=\"program files\">" +
"<folder name=\"uninstall information\" />" +
"</folder>" +
"<folder name=\"users\" />" +
"</folder>";
XElement xElement = XElement.Parse(xml);
IEnumerable<string> values = xElement.
Descendants("folder").
Where(element => element.Attribute("name")?.Value?.StartsWith("u") == true).
Select(element => element.Attribute("name").Value);