如何在末尾找到带有空格的节点并获取行位置?

时间:2018-04-14 02:19:56

标签: c# linq-to-xml

如何在xml文件中搜索任何标记的关闭标记之前的空格,并使用(IXmlLineInfo)的{​​{1}}属性获取其实际位置 例如,在以下xml文件的情况下

LinePosition

输出应该像

<?xml version="1.0" encoding="utf-8"?>
<main>
    <child1>anything</child1>
    <child2>whatever </child1>
    <pp>
        <ccl>i dont know</ccl>
        <ccp>1253 </ccp>
    </pp>
</main>

使用Whitespace found at position 4,19 Whitespace found at position 7,14 执行此操作的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

首要任务是找到以空格结尾的所有节点,然后通过将它们转换为IXmlLineInfo来获取行信息,假设文档是XDocument

document.Descendants()
        .Where(node => ((string)node).EndsWith(" "))
        .Select(node => node as IXmlLineInfo);

这将为您提供包含行号和节点位置的行信息。如果你想要空间的查找线位置,你需要对这个值进行一些计算,即将节点值的长度加到行位置,你将获得空格的位置。此外,您可能需要添加节点名称的长度,包括开始和结束标记,以找到确切的位置。