gpt4 book ai didi

c# - XmlReader.HasAttributes 创建后立即返回 false

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:54 28 4
gpt4 key购买 nike

我对使用 C# 的 XML 类还比较陌生。我什至无法让 XML 阅读器识别出我传递给它的字符串是 XML。这是我用来测试基本 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();
}
}
}
}

这是我正在尝试读取的 XML

<Wall>
<Actual>
<Specifications>
<Insertion> 375.6858 916.8871 0.0000 </Insertion>
<Angle> 3.14159 </Angle>
<WallDesc> E4-1, H: 8' 1 1/8, Sh: Yes, S: 2~4~2~9-0-0~SPF~~, Spc: Single @ 16 in OC, BP: 2~4~2~12-0-0~SYP~~, CP: 2~4~2~12-0-0~SYP~~, TP: 2~4~2~12-0-0~SYP~~,\P LI: Single @ 38.75000000, CB: No, VB: No, NCT: 2~4~2~9-0-0~SPF~~, CT: 2~4~2~9-0-0~SPF~~, Pac: 2~4~2~9-0-0~SPF~~, Mir: Yes </WallDesc>
<WallNum> 1 </WallNum>
<VaporBarrier></VaporBarrier>
</Specifications>
</Actual>
</Wall>

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

最佳答案

XmlReader.HasAttribute返回 true如果当前节点有属性。由于您不进入文档,读者将从根元素 <Wall> 开始。 ,它没有属性。您的任何其他元素也没有。

一个属性是bar<foo bar="baz" /> .

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

关于c# - XmlReader.HasAttributes 创建后立即返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32633885/

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