gpt4 book ai didi

c# - 无法使用 linq 从 xml 读取到 <>,获取空值

转载 作者:太空狗 更新时间:2023-10-29 23:35:01 24 4
gpt4 key购买 nike

我有一个 XML 文件:

<?xml version="1.0" encoding="us-ascii"?>
<TestItems xmlns="http://www.blogger.com">
<TestItem correct="0" incorrect="0">
<Question>question</Question>
<Answer>answer</Answer>
<Tags>test1;test2</Tags>
</TestItem>
<TestItem correct="0" incorrect="0">
<Question>question3</Question>
<Answer>answer3</Answer>
<Tags>tagA;tagB;tagC</Tags>
</TestItem>
</TestItems>

我还有一个对象:

class TestItem
{
public string Question { get; set; }
public string Answer { get; set; }
public int NumberCorrect { get; set; }
public int NumberIncorrect { get; set; }
public string Tags { get; set; }
}

这是我用来将数据读入内存的代码:

XDocument ktdb = XDocument.Load("KTdb.xml");

XNamespace ns = ktdb.Root.Name.Namespace;

var testItems = from item in ktdb.Descendants(ns + "TestItem")
select new TestItem
{
Question = item.Element(ns + "Question").Value,
Answer = (string)item.Element(ns + "Answer").Value,
Tags = item.Element(ns + "Tags").Value,
NumberCorrect = Convert.ToInt32(item.Attribute(ns + "correct").Value),
NumberIncorrect = Convert.ToInt32(item.Attribute(ns + "incorrect").Value)
};

但它不会让我那样做。当执行 LINQ 语句时,在 TestItem 对象上调用默认构造函数,然后我得到 null 异常,因为 item.Element(ns + "Question").Value 为 null。

为什么会出现错误?如何修复我的代码?

谢谢。

最佳答案

改变这个:

NumberCorrect = Convert.ToInt32(item.Attribute(ns + "correct").Value),
NumberIncorrect = Convert.ToInt32(item.Attribute(ns + "incorrect").Value)

对此:

NumberCorrect = Convert.ToInt32(item.Attribute("correct").Value),
NumberIncorrect = Convert.ToInt32(item.Attribute("incorrect").Value)

即从属性名称中删除 ns 的连接。

关于c# - 无法使用 linq 从 xml 读取到 <>,获取空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3388047/

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