Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Linq XML无效操作异常_C#_Xml_Linq - Fatal编程技术网

C#Linq XML无效操作异常

C#Linq XML无效操作异常,c#,xml,linq,C#,Xml,Linq,我正在尝试基于.csv文件创建一个XML文件。我想我可以用我以前的方法来读取.csv文件,只需更换一些部件。然而,我得到一个例外,说: 无效操作例外 这是我的密码: public void LoadFile() { XDocument outputDocument = new XDocument(); outputDocument.Add(new XElement("Inventory")); using (var fstream = F

我正在尝试基于.csv文件创建一个XML文件。我想我可以用我以前的方法来读取.csv文件,只需更换一些部件。然而,我得到一个例外,说:

无效操作例外

这是我的密码:

    public void LoadFile() {
        XDocument outputDocument = new XDocument();
        outputDocument.Add(new XElement("Inventory"));

        using (var fstream = File.OpenRead(FilePathProducts))
        using (var fileReader = new StreamReader(fstream)) {
            while (!fileReader.EndOfStream) {
                var readLine = fileReader.ReadLine();
                var words = readLine.Split(';');


                outputDocument.Add(
                    new XElement("Item",
                        new XElement("Name", words[1]),
                        new XElement("Count", words[3]),
                        new XElement("Price", words[4]),
                        new XElement("Comment", "<Missing Value>"),
                        new XElement("Artist", "<Missing Value>"),
                        new XElement("Publisher", "Nintendo"),
                        new XElement("Genre", "<Missing Value>"),
                        new XElement("Year", words[0]),
                        new XElement("ProductID", words[2])
                    )
                );
            }
        }

        outputDocument.Save(FilePathResult);
    }
public void加载文件(){
XDocument outputDocument=新XDocument();
outputDocument.Add(新元素(“库存”);
使用(var fstream=File.OpenRead(FilePathProducts))
使用(var fileReader=newstreamreader(fstream)){
而(!fileReader.EndOfStream){
var readLine=fileReader.readLine();
var words=readLine.Split(“;”);
outputDocument.Add(
新XElement(“项目”,
新XElement(“名称”,词语[1]),
新单词(“计数”,单词[3]),
新条款(“价格”,词语[4]),
新XElement(“注释”和“),
新XElement(“艺术家”、“艺术家”),
新XElement(“出版商”、“任天堂”),
新XElement(“流派”和“),
新词语(“年份”,词语[0]),
新XElement(“ProductID”,单词[2])
)
);
}
}
outputDocument.Save(FilePathResult);
}
它说的是“创建了一个结构错误的文档”(粗略翻译)


当我尝试删除循环时,输出文件只显示一个自动关闭的库存标记。我希望它是一个开放和封闭的标签。因此,我猜测上面代码的第3行有问题。

您试图将
元素直接附加到XML文档,并且XML文档不允许有多个根元素。这就是为什么会出现错误

我假定您确实希望将它们添加到
Inventory
元素中,在这种情况下,您应该执行以下操作:

public void LoadFile() {
    var outputDocument = new XDocument();
    var inventory = new XElement("Inventory");
    outputDocument.Add(inventory);

    using (var fstream = File.OpenRead(FilePathProducts))
    using (var fileReader = new StreamReader(fstream)) {
        while (!fileReader.EndOfStream) {
            var readLine = fileReader.ReadLine();
            var words = readLine.Split(';');


            inventory.Add(
                new XElement("Item",
                    new XElement("Name", words[1]),
                    new XElement("Count", words[3]),
                    new XElement("Price", words[4]),
                    new XElement("Comment", "<Missing Value>"),
                    new XElement("Artist", "<Missing Value>"),
                    new XElement("Publisher", "Nintendo"),
                    new XElement("Genre", "<Missing Value>"),
                    new XElement("Year", words[0]),
                    new XElement("ProductID", words[2])
                )
            );
        }
    }

    outputDocument.Save(FilePathResult);
}
public void加载文件(){
var outputDocument=new XDocument();
var存货=新的XElement(“存货”);
outputDocument.Add(存货);
使用(var fstream=File.OpenRead(FilePathProducts))
使用(var fileReader=newstreamreader(fstream)){
而(!fileReader.EndOfStream){
var readLine=fileReader.readLine();
var words=readLine.Split(“;”);
库存。添加(
新XElement(“项目”,
新XElement(“名称”,词语[1]),
新单词(“计数”,单词[3]),
新条款(“价格”,词语[4]),
新XElement(“注释”和“),
新XElement(“艺术家”、“艺术家”),
新XElement(“出版商”、“任天堂”),
新XElement(“流派”和“),
新词语(“年份”,词语[0]),
新XElement(“ProductID”,单词[2])
)
);
}
}
outputDocument.Save(FilePathResult);
}

您正试图将
元素直接附加到XML文档,并且XML文档不允许有多个根元素。这就是为什么会出现错误

我假定您确实希望将它们添加到
Inventory
元素中,在这种情况下,您应该执行以下操作:

public void LoadFile() {
    var outputDocument = new XDocument();
    var inventory = new XElement("Inventory");
    outputDocument.Add(inventory);

    using (var fstream = File.OpenRead(FilePathProducts))
    using (var fileReader = new StreamReader(fstream)) {
        while (!fileReader.EndOfStream) {
            var readLine = fileReader.ReadLine();
            var words = readLine.Split(';');


            inventory.Add(
                new XElement("Item",
                    new XElement("Name", words[1]),
                    new XElement("Count", words[3]),
                    new XElement("Price", words[4]),
                    new XElement("Comment", "<Missing Value>"),
                    new XElement("Artist", "<Missing Value>"),
                    new XElement("Publisher", "Nintendo"),
                    new XElement("Genre", "<Missing Value>"),
                    new XElement("Year", words[0]),
                    new XElement("ProductID", words[2])
                )
            );
        }
    }

    outputDocument.Save(FilePathResult);
}
public void加载文件(){
var outputDocument=new XDocument();
var存货=新的XElement(“存货”);
outputDocument.Add(存货);
使用(var fstream=File.OpenRead(FilePathProducts))
使用(var fileReader=newstreamreader(fstream)){
而(!fileReader.EndOfStream){
var readLine=fileReader.readLine();
var words=readLine.Split(“;”);
库存。添加(
新XElement(“项目”,
新XElement(“名称”,词语[1]),
新单词(“计数”,单词[3]),
新条款(“价格”,词语[4]),
新XElement(“注释”和“),
新XElement(“艺术家”、“艺术家”),
新XElement(“出版商”、“任天堂”),
新XElement(“流派”和“),
新词语(“年份”,词语[0]),
新XElement(“ProductID”,单词[2])
)
);
}
}
outputDocument.Save(FilePathResult);
}

这正是我想要的。=)尽管。。现在,最后一行给出了问题outputDocument.Save(FilePathResult);它说的是“导致一个无效的xml文档”?@Phrosen确切的错误是什么?听起来你在用一种非英语的语言来使用.NET,所以请随意用它的原始语言发布。对不起。我刚刚意识到我漏掉了一行代码。现在可以了。谢谢这正是我想要的尽管。。现在,最后一行给出了问题outputDocument.Save(FilePathResult);它说的是“导致一个无效的xml文档”?@Phrosen确切的错误是什么?听起来你在用一种非英语的语言来使用.NET,所以请随意用它的原始语言发布。对不起。我刚刚意识到我漏掉了一行代码。现在可以了。谢谢提示:您可以使用将错误消息从您的语言翻译为英语。提示:您可以使用将错误消息从您的语言翻译为英语。