gpt4 book ai didi

c# - 如何使用 XmlSerializer 反序列化具有多个 xmlns 属性的 XML

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:46 25 4
gpt4 key购买 nike

我正在尝试像这样反序列化一个 XML 文件(它实际上是一个 maven POM 但现在并不重要...):

<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>
</project>

我有一个手动定义的 POM 类:

[XmlRoot(Namespace= "http://maven.apache.org/POM/4.0.0")]
public class POM
{
[XmlElement("modelVersion")]
public string ModelVersion{ get; set; }
}

...和我的反序列化代码:

FileStream fileStream = File.Open("pom.xml", FileMode.Open, FileAccess.Read, FileShare.Read);
var codec = new XmlSerializer(typeof(POM));
var pom = (POM) codec.Deserialize(fileStream);

当我运行它时,我得到 InvalidOperationException: 'project xmlns="http://maven.apache.org/POM/4.0.0"' was not expected.

如何让反序列化器处理额外的 xmlns 属性和 xsi:schemalocation?

当我删除它们时,代码运行没有错误。

谢谢,迈克尔

最佳答案

只需将 ElementName 添加到 XmlRootAttribute,因为您的根元素具有 project 名称,即:

[XmlRoot(Namespace = "http://maven.apache.org/POM/4.0.0", ElementName = "project")]

关于c# - 如何使用 XmlSerializer 反序列化具有多个 xmlns 属性的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9359554/

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