如何找到末尾有空格的节点并获取行位置?
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=的位置].此外,您可能需要添加节点名称的长度,包括开始和结束标记以找到准确的位置。
我如何在 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=的位置].此外,您可能需要添加节点名称的长度,包括开始和结束标记以找到准确的位置。