gpt4 book ai didi

c# - 如何使用 XMLSerializer 添加没有前缀的默认 namespace

转载 作者:IT王子 更新时间:2023-10-29 04:47:40 24 4
gpt4 key购买 nike

我正在尝试使用 XmlSerializer 生成一个包含默认 namespace 但没有前缀的 XML 文档,例如

<?xml version="1.0" encoding="utf-8" ?>
<MyRecord ID="9266" xmlns="http://www.website.com/MyRecord">
<List>
<SpecificItem>

使用下面的代码...

string xmlizedString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(ExportMyRecord));
XmlSerializerNamespaces xmlnsEmpty = new XmlSerializerNamespaces();
xmlnsEmpty.Add(string.Empty, string.Empty);
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, myRecord, xmlnsEmpty);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
xmlizedString = this.UTF8ByteArrayToString(memoryStream.ToArray());

和类结构...

[Serializable]
[XmlRoot("MyRecord")]
public class ExportMyRecord
{
[XmlAttribute("ID")]
public int ID { get; set; }

现在,我尝试了各种选择......

XmlSerializer xs = new XmlSerializer
(typeof(ExportMyRecord),"http://www.website.com/MyRecord");

或者...

[XmlRoot(Namespace = "http://www.website.com/MyRecord", ElementName="MyRecord")]

给我...

<?xml version="1.0" encoding="utf-8"?>
<q1:MylRecord ID="9266" xmlns:q1="http://www.website.com/MyRecord">
<q1:List>
<q1:SpecificItem>

我需要 XML 具有不带前缀的 namespace ,因为它要交给第三方提供商,而他们拒绝所有其他替代方案。

最佳答案

你去吧:

ExportMyRecord instance = GetInstanceToSerializeFromSomewhere();
XmlSerializerNamespaces xmlnsEmpty = new XmlSerializerNamespaces();
xmlnsEmpty.Add(string.Empty, "http://www.website.com/MyRecord");
var serializer = new XmlSerializer(
instance.GetType(),
"http://www.website.com/MyRecord"
);

关于c# - 如何使用 XMLSerializer 添加没有前缀的默认 namespace ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2500111/

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