使用 C# 将 XML 的属性值解析为 CSV

Parsing Attribute values of XML into a CSV using C#

我将下面的 xml 作为主 xml 的一部分。能够将其提取到一个字符串中,现在我想解析下面的 xml 并将属性名称 PersonN 、 VerifiedHuman 、 CurrAddrBlockIndex 的值获取到一个单独的 csv 文件中 请让我知道如何解决这个问题?

XML 我正在尝试解析 :

<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>
         </Attributes>
         </RiskViewAttribResponse>
     </RiskViewProducts>
     </DataSourceResponses>
    </ConsumerSubject>
  </ConsumerSubjects>
</InterConnectResponse>   

预期输出文件:

3, 2, 0.61    

我试过了但是没有成功

  StringBuilder output = new StringBuilder();   
  using (XmlReader reader = XmlReader.Create(new StreamReader(value)))
            {

                reader.ReadToFollowing("PersonN");
                string LNREF72 = reader.Value;
                output.AppendLine(LNREF72);
                reader.ReadToFollowing("VerifiedHuman");
                string VerifiedHuman = reader.Value;
                output.AppendLine(", " + VerifiedHuman);
                reader.ReadToFollowing("CurrAddrBlockIndex");
                string CurrAddrBlockIndex = reader.Value;
                output.AppendLine(", " + CurrAddrBlockIndex);

            }     

不是我想要的方式,但如果您要使用 XmlReader,这将是您想要的方式。

请查看 XmlDocument 或其他比 XmlReader 更好的一打解析方法XML。

StringBuilder output = new StringBuilder();
using (XmlReader reader = XmlReader.Create(new StreamReader(value)))
{
    bool isValue = false;
    while (reader.Read())
    {
        if (reader.NodeType == XmlNodeType.Element && reader.Name == "Value")
        {
            isValue = true;
        }

        if (reader.NodeType == XmlNodeType.Text && isValue)
        {
            output.AppendLine((output.Length == 0 ? "" : ", ") + reader.Value);
            isValue = false;
        }
    }
}