我有一个xml文件,内容如下,
<Root>
<Test> EffectiveHealthCare@ahrq.hhs.gov </Test>
</Root>
<Parent>
<Test> Welcome</Test>
</Parent>
在包含特殊字符时,您知道如何在文件中获取标记和行号吗?
我的输出看起来像
标记:< Test>EffectiveHealthCare@ahrq.hhs.gov</Test>
行号:2
文字:EffectiveHealthCare@ahrq.hhs.gov
Image2 for http://stackoverflow.com/questions/4471001/get-line-number-for-xelement-here
请帮帮我。
谢谢,
Sheena Roy
答案 0 :(得分:0)
如果你只想要行号,你可以写:
var specialChars = new [] {'@','<','>','&','*','$','#'};
var linesWithSpecialChars = new List<int>();
var i = 0;
foreach(var line in File.ReadLines(<yourfilename>))
{
if(line.indexOfAny(specialChars) > -1)
{
linesWithSpecialChars.Add(i);
}
i++;
}
答案 1 :(得分:0)
例如(如果文档是字符串):
XDocument.Load(new StringReader(@"
<xml>
<Root>
<Test> AnotherLine </Test>
<Test> EffectiveHealthCare@ahrq.hhs.gov </Test>
</Root>
<Parent>
<Test> Welcome</Test>
</Parent>
</xml>"), LoadOptions.SetLineInfo)
.Root
.Elements("Root")
.Elements("Test")
.Where(node => node.Value.IndexOfAny(new [] {'@','<','>','&','*','$','#'}) > -1 )
.Select(node => (node as IXmlLineInfo).LineNumber)
加载文档时需要设置LoadOptions.SetLineInfo
输入参数
用于查找任何元素(即叶节点)中的字符:
XDocument.Load(new StringReader(@"
<xml>
<Root>
<Test> AnotherLine </Test>
<Test> EffectiveHealthCare@ahrq.hhs.gov </Test>
</Root>
<Parent>
<Test> Welcome</Test>
</Parent>
</xml>"), LoadOptions.SetLineInfo)
.Root
.Descendants()
.Where(node => !node.HasElements)
.Where(node => node.Value.IndexOfAny(new [] {'@','<','>','&','*','$','#'}) > -1 )
.Select(node => (node as IXmlLineInfo).LineNumber)