c# - 如何从子节点获取 C# 中的所有文本,但避免来自具有特定属性(例如已删除)的子节点的文本
问题描述
我有以下 XML:
<guidance icon="G">
<text newpara="N">
The amount of a firm'scapital
resources maintained for the purposes of <k2:xref revoked="20061231" in_force_from="20050114">
<k2:xrefout revoked="20061231">PRU 9.3.30 R</k2:xrefout>
</k2:xref>
<changed-by in_force_from="20070101">2006/43</changed-by>
</text>
<text in_force_from="20070101" newpara="N">
<k2:xref in_force_from="20070101">
<k2:xrefout xlink:type="simple" xlink:label="SRC527" k2:destElementId="DES60" >MIPRU 4.2.11 R</k2:xrefout>
</k2:xref>
<changed-by in_force_from="20070101">2006/43</changed-by>
</text>
</guidance>
代码:
textNodes = levelNode.SelectNodes("guidance");
string text = textNodes.InnerText;
我收到了文字
“为 PRU 9.3.30 R2006/43MIPRU 4.2.11 R2006/43 的目的而维持的公司资本资源数量”。
如果文本子节点中有一个已撤销的属性,我想要什么,那么文本将不会包含在文本变量中。因此,文本将在上面的示例中:
“为 2006/43MIPRU 4.2.11 R 的目的而维持的公司资本资源的数量”
解决方案
你可以这样做
var values = xmlDoc.DocumentElement
.SelectSingleNode("//guidance")
.SelectNodes("//*[not(@revoked)]/text()")
.OfType<XmlNode>()
.Select(n => n.Value.Trim());
string text = string.Concat(values);
命名空间
using System;
using System.Linq;
using System.Xml;
推荐阅读
- javascript - Javascript数组没有以某种方式变异
- javascript - VIDEOJS:错误:TypeError:this.ytPlayer.getDuration 不是函数 && this.ytPlayer.getPlaybackRate
- sql - Spark SQL Group by 未按预期工作
- python - python 3.7 tkinter 的空列表框返回值
- excel - 在数组中传递工作表函数参数
- apache-spark - Spark Union 与使用 lit in spark 添加列
- ruby-on-rails - FactoryBot #build 对象与传入的关联对象未正确创建对象
- mysql - 跨多个表呈现多行的 MySQL 数据
- c++ - 在VSCode中调试时如何导致无法打开'strtol_l.c'
- javascript - 从终端运行节点 app.js 的“大多数中间件”问题