gpt4 book ai didi

c# - 如何使用 XmlSerializer 将自定义值设置为 xml header 中的 xmlns

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

我正在尝试使用 XmlSerializer 将 Document 标记内的 xmlns 属性值设置为自定义值。目前我的简化 xml 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Document xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
<GrpHdr>
<Price Curency="EUR">
40.55
</Price>
</GrpHdr>
</Document>

我的简化代码如下所示:

public void Main(){
var document = new CustomDocument();
new XmlSerializer(typeof(CustomDocument)).Serialize(Console.Out, document);
}

[XmlRoot(ElementName = "Document")]
public class CustomDocument{

[XmlAttribute("schemaLocation", AttributeName = "schemaLocation",
Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public string SchemaLocation = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd";

[XmlElement("GrpHdr")
Public XmlHeader {get; set;}

Public XmlDocument(){
XmlHeader = new XmlHeader();
}
}

public class XmlHeader{
[XmlElement("Price")
Public string Price {get; set;}

public XmlHeader(){
Price = "40.55";
}
}

如何更改 xmlns:xsd 的值?添加 [XmlElement("xmlns")] 不起作用

最佳答案

很遗憾,您不能这样做。 xmlns:xsixmlns:xsd 是保留的命名空间。您不能更改默认值,因为它是 .Net 框架中提供的标准模式定义的一部分。

我不确定你为什么要这样做,但如果你想添加与你的模式 xsd 命名空间匹配的命名空间,那么你可以添加一个自定义命名空间,如:

 [XmlRoot(ElementName = "Document", Namespace = "http://customNameSpaceFromXsd/XMLSchema.xsd")]
public class CustomDocument{
}

这将出现在您的 xml 中,如下所示:

<Document 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://customNameSpaceFromXsd/XMLSchema.xsd"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">

关于c# - 如何使用 XmlSerializer 将自定义值设置为 xml header 中的 xmlns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33413624/

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