gpt4 book ai didi

c# - 使用 XmlReader 读取属性值

转载 作者:IT王子 更新时间:2023-10-29 04:45:44 26 4
gpt4 key购买 nike

我有一个试图从 here 中读取的 XML 文件,并具有以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;

namespace XML
{
class Program
{
static void Main(string[] args)
{
XmlTextReader textReader = new XmlTextReader("secLendingXML.cfm.xml");
while (textReader.Read())
{
switch (textReader.NodeType)
{
case XmlNodeType.Element:
Console.WriteLine(textReader.Name);
Console.WriteLine(textReader.Value);
break;
case XmlNodeType.Text:
Console.WriteLine(textReader.Value);
break;
case XmlNodeType.XmlDeclaration:
case XmlNodeType.ProcessingInstruction:
Console.WriteLine(textReader.Name + " " + textReader.Value);
break;
case XmlNodeType.Comment:
Console.WriteLine(textReader.Value);
break;
case XmlNodeType.EndElement:
break;
}
}
Console.ReadLine();
}
}
}

从读取节点并返回名称的意义上来说,代码工作正常。但是,问题是我还试图检索节点内的数据。换句话说,当它读取测试部分之后的第一部分时,它将读取:

slnc:DataSet
slnc:Group
slnc:Section
slnc:ActualAvailableToBorrow
*** here ***
slnc:oustandingLoans

这是我希望文本阅读器在节点中读取以下值的地方,例如confidentiality="F"currency="USD" 等,但它只是直接跳到下一节无需阅读这些值!

<slnc:actualAvailableToBorrow xmlns:slnc="http://www.newyorkfed.org/xml/schemas/SecLending" 
confidentiality="F" currency="USD" decimals="0" method="AA"
multiplier="5" securityLendingType="AA" status="A" value="1474"/>

如何让文本阅读器读取属性值?打印值“currency”,然后是它的值:“F”,等等。

最佳答案

获取单个命名属性

使用XmlTextReader.GetAttribute (MSDN)

case XmlNodeType.Element:
Console.WriteLine(textReader.Name);
Console.WriteLine(textReader.Value);
Console.WriteLine(textReader.GetAttribute("currency"));

此函数的一个很好的特性:如果属性未定义,它不会导致异常 - 它只会返回 Null

获取所有属性

使用XmlTextReader.MoveToAttribute (MSDN)

结合使用 AttributeCount 属性和 MoveToAttribute:

case XmlNodeType.Element:
Console.WriteLine(textReader.Name);
Console.WriteLine(textReader.Value);
for (int attInd = 0; attInd < textReader.AttributeCount; attInd++){
textReader.MoveToAttribute( attInd );
Console.WriteLine(textReader.Name);
Console.WriteLine(textReader.Value);
}
textReader.MoveToElement();

关于c# - 使用 XmlReader 读取属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com