【发布时间】:2017-06-23 16:02:23
【问题描述】:
我有一个 xml,我只想从中解析特定属性而不是全部。我有 100 多个属性,我提供的 xml 是一个带有少量属性的示例
.我想明确指定属性名称并解析它们的值。
例如:我想解析获取属性名称 PersonN 、 VerifiedHuman 的值
在我的逻辑中,我想通过指定 <Name>PersonN</Name> 之类的属性名称来解析值并解析它的值
结果应该是 csv。
<InterConnectResponse>
<SchemaVersion>2.0</SchemaVersion>
<ConsumerSubjects>
<ConsumerSubject subjectIdentifier="Primary">
<DataSourceResponses>
<RiskViewProducts>
<RiskViewAttribResponse>
<Attributes>
<Attribute>
<Name>PersonN</Name>
<Value>3</Value>
</Attribute>
<Attribute>
<Name>VerifiedHuman</Name>
<Value>2</Value>
</Attribute>
<Attribute>
<Name>CurrAddrBlockIndex</Name>
<Value>0.61</Value>
</Attribute>
------ Many More Attributes ---------
</Attributes>
</RiskViewAttribResponse>
</RiskViewProducts>
</DataSourceResponses>
</ConsumerSubject>
</ConsumerSubjects>
</InterConnectResponse>
我正在使用的逻辑:(我不知道如何指定属性名称并获取它们的值)在这段代码中str3是上面的xml。
using (XmlReader read = XmlReader.Create(new StringReader(str3)))
{
bool isValue = false;
while (read.Read())
{
if (read.NodeType == XmlNodeType.Element && read.Name == "Value")
{
isValue = true;
}
if (read.NodeType == XmlNodeType.Text && isValue)
{
output.Append((output.Length == 0 ? "" : ", ") + read.Value);
isValue = false;
}
}
}
预期输出:
3, 2
【问题讨论】:
-
请注意,您所说的“属性”并不是 XML 中通常所说的属性。你可能无法控制它,但至少值得意识到它令人困惑。
-
如果有多个
ConsumerSubject元素,你想做什么?
标签: c# xml linq-to-xml