【发布时间】:2020-04-01 03:11:34
【问题描述】:
<?xml version="1.0"?>
<Rules>
<Rule id="001">
<Rule1> name="name1" ruleAttrib="rule1Attribute"</Rule1>
<Rule2> name="name2" </Rule2>
</Rule>
<Rule id="002">
<Rule3>name="name3"</Rule3>
<Rule4>name="name4"</Rule4>
<Rule5>name="name5" ruleAttrib="rule2Attribute"</Rule5>
</Rule>
<Rule id="003">
<Rule6>name="name6"</Rule6>
<Rule7>name="name7" ruleAttrib=""</Rule7>
</Rule>
<Rule id="004">
<Rule8>name="name8"</Rule8>
<Rule9>name="name9" </Rule9>
</Rule>
<Rule id="005" />
<Rule id="006">
<Rule10>name="name10"</Rule10>
<Rule11>name="name11" ruleAttrib="rule4Attribute"</Rule11>
<Rule12>name="name12"</Rule12>
</Rule>
</Rules>
无法打印特定属性的属性值列表,例如(“ruleAttrib”)
预期输出列表:-
- rule1属性
- rule2属性
- [空白]
- rule4Attribute
索引 3 上方为空,因为 id = 003 的规则包含不包含任何内容的 ruleAttrib。
尝试过的代码:-
XDocument xdoc = new XDocument.Load(xmlPath);
List<XElement> ruleGroupList = xdoc.Descendants("Rule").ToList();
foreach (var item in ruleGroupList)
{
if (item.Descendants().Attributes("ruleAttrib").exist)
{
List<XAttribute> ruleAttriblist = item.Descendants().Attributes("ruleAttrib").ToList();
Console.WriteLine(ruleAttriblist );
}
}
Console.ReadLine();
【问题讨论】:
-
你得到了什么?
-
无法应用条件逻辑...在 if 语句中尝试的代码只是条件语句而不是适用的语法,找不到“exist”的替换
-
您的 xml 是否正确?我看到未关闭标签
<Rule12>和ruleAttrib不是xml 属性,它只是节点中的文本。 -
这些值不是属性。它们在内部文本中。
标签: c# linq linq-to-xml