XmlReader.HasAttributes在创建后立即返回false

时间:2015-09-17 15:10:27

标签: c# xml xmlreader

我使用C#的XML类比较新。我甚至无法让XML阅读器识别出我传递给它的字符串是XML。这是我用来测试基本Xml读数的单元测试

$.each(c, function() {
    // I need to pass each value from the array as the
    // last argument in the function below
    var p = get_shutter_price( width, height, this );
    if ( p > 0 ) {
        // Return the value from the array which allowed the condition to be met
        console.log( this );
    }
});

这是我正在尝试阅读的XML

[TestFixture()]
public class LegacyWallTests
{
    [Test()]
    public void ReadLegacyWallFile()
    {
        var legacyWallText = legacyfiles.legacywall1;
        {
            string xmlString = legacyfiles.legacywall1;
            using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
            {
                reader.HasAttributes.Should().BeTrue();
            }
        }
    }
}

legacyfiles.legacywall1是我添加到项目资源中的xml文件的名称。我知道正在读取xml文件,因为将该字符串输出到控制台会从文件中获取xml。但是,当我创建XmlReader并测试有属性时,它说没有。我不知道我做错了什么。

1 个答案:

答案 0 :(得分:5)

如果当前节点具有属性,则

XmlReader.HasAttribute返回true。由于您没有进入文档,因此读者从根元素<Wall>开始,该元素没有属性。你的其他元素也没有。

bar中的属性为<foo bar="baz" />

您通常也不希望使用读者来处理XML。获取或生成XSD(对输入验证也非常有用),从该XSD生成一个类,并将传入的XML反序列化为该类的实例。然后,您只需访问wall.Actual.Specifications[0].WallDesc