我是正则表达式的新手,想为我的.net应用程序创建两个正则表达式。我有一个输入变量,它存储了一个XML。下面是xml
<Row> ...... </Row> <Row {optional}> .... </Row> <Row {optional} header="true" {optional}> </Row>
我需要两个正则表达式:1.正则表达式,它选择header=“true”的行2.正则表达式选择没有header=“true”的行正则表达式只需要考虑打开标签。例如:
ccrfmcuu1#
Regex不是在.NET中处理xml的最佳选择如果您使用的是.NET 3.5或更高版本,请查看LINQ to xml有关运行时的旧版本,请参阅XmlDocument and XPath使用LINQ,你的代码应该是这样的:
var document = XDocument.Load("path to your file"); // or XDocument.Parse if you have content in a string var elementsWithHeaders = document.Descendants("Row").Where(x => x.Attribute("header")!=null && x.Attribute("header").Value == "true");
这段代码不是最佳的,但是为了使它更有效,我需要知道更多关于xml结构的假设
如果使用C#6,也可以使用null-conditional operator来简化上述 predicate
var elementsWithHeaders = document.Descendants("Row").Where(x => x.Attribute("header")?.Value == "true");
1条答案
按热度按时间ccrfmcuu1#
Regex不是在.NET中处理xml的最佳选择如果您使用的是.NET 3.5或更高版本,请查看LINQ to xml有关运行时的旧版本,请参阅XmlDocument and XPath
使用LINQ,你的代码应该是这样的:
这段代码不是最佳的,但是为了使它更有效,我需要知道更多关于xml结构的假设
如果使用C#6,也可以使用null-conditional operator来简化上述 predicate