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

How do I find nodes with whitespace at the end and get line position?

我如何在 xml 文件中搜索任何标签的结束标签之前的空格,并使用 (IXmlLineInfo)LinePosition 属性 获取其实际位置 例如下面的 xml 文件

<?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

使用 XDocument 执行此操作的最简单方法是什么?

第一个任务是找到所有以 space 结尾的节点,然后通过将它们强制转换为 IXmlLineInfo 来获取行信息,假设文档是 XDocument:

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

这将为您提供包含行号和节点位置的行信息。如果你想找到space的行位置,你需要对这个值做一些计算,即将节点值的长度加上行位置,你会得到白色[=17=的位置].此外,您可能需要添加节点名称的长度,包括开始和结束标记以找到准确的位置。