使用 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;
}
}
}
我将下面的 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;
}
}
}