gpt4 book ai didi

c# - 如何从 .NET 对象创建 XML 文档?

转载 作者:可可西里 更新时间:2023-11-01 07:59:33 25 4
gpt4 key购买 nike

我有以下接受文件名的变量:

var xtr = new XmlTextReader(xmlFileName) { WhitespaceHandling = WhitespaceHandling.None };
var xd = new XmlDocument();
xd.Load(xtr);

我想更改它以便我可以传入一个对象。我不想先将对象序列化到文件中。

这可能吗?

更新:

我的初衷是拿一个xml文档,合并一些xslt(存储在一个文件中),然后输出并返回html...像这样:

public string TransformXml(string xmlFileName, string xslFileName)
{
var xtr = new XmlTextReader(xmlFileName) { WhitespaceHandling = WhitespaceHandling.None };
var xd = new XmlDocument();
xd.Load(xtr);

var xslt = new System.Xml.Xsl.XslCompiledTransform();
xslt.Load(xslFileName);
var stm = new MemoryStream();
xslt.Transform(xd, null, stm);
stm.Position = 1;
var sr = new StreamReader(stm);
xtr.Close();
return sr.ReadToEnd();
}

在上面的代码中,我从文件中读取了 xml。现在我想做的只是在对象被序列化到文件之前处理它。

那么让我用代码来说明我的问题

public string TransformXMLFromObject(myObjType myobj , string xsltFileName)
{
// Notice the xslt stays the same.
// Its in these next few lines that I can't figure out how to load the xml document (xd) from an object, and not from a file....

var xtr = new XmlTextReader(xmlFileName) { WhitespaceHandling = WhitespaceHandling.None };
var xd = new XmlDocument();
xd.Load(xtr);
}

最佳答案

您想将任意 .NET 对象转换为序列化的 XML 字符串吗?没有比这更简单的了!! :-)

public string SerializeToXml(object input)
{
XmlSerializer ser = new XmlSerializer(input.GetType(), "http://schemas.yournamespace.com");
string result = string.Empty;

using(MemoryStream memStm = new MemoryStream())
{
ser.Serialize(memStm, input);

memStm.Position = 0;
result = new StreamReader(memStm).ReadToEnd();
}

return result;
}

应该如此 :-) 当然,您可能还想将默认的 XML 命名空间配置为参数。

或者您是否希望能够在现有对象之上创建 XmlDocument?

public XmlDocument SerializeToXmlDocument(object input)
{
XmlSerializer ser = new XmlSerializer(input.GetType(), "http://schemas.yournamespace.com");

XmlDocument xd = null;

using(MemoryStream memStm = new MemoryStream())
{
ser.Serialize(memStm, input);

memStm.Position = 0;

XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;

using(var xtr = XmlReader.Create(memStm, settings))
{
xd = new XmlDocument();
xd.Load(xtr);
}
}

return xd;
}

关于c# - 如何从 .NET 对象创建 XML 文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2548708/

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