[英]Create dynamic object with hierarchy from xml and c#
我想从一串XML创建一个动态对象。 有一个简单的方法吗?
示例字符串。
<test><someElement><rep1>a</rep1><rep1>b</rep1></someElement></test>
我正在尝试创建一个用于通过nvelocity传递数据的mvc编辑器,并且希望前端的人输入xml作为要解析的数据。
提前致谢。
您需要完成以下两项工作:1)有效的xml 2)具有与输入xml中相同的数据成员的C#类。
您需要创建一个C#类的对象,然后对xml的所有元素进行枚举,并且当对每个元素名称使用switch时,可以采用该元素的内部text属性并将其分配给对象的各个数据成员。 C#代码可能类似于以下内容(您需要填补空白):
class test {
List<string> someElement;
}
class xmlEnum
{
static test createObject(string inputXml)
{
test t = new test();
// load input xml in XmlDocument class
// and start iterating thorugh all the elements
swithc(elementName)
{
case rep1:
t.someElement.add(element.innerText);
break;
// some more cases will go here
}
// finally return the object;
return t;
}
}
我希望这能帮到您。
我认为没有现成的动态解决方案。 如果我正确理解了您的问题,那么您想做这样的事情。
SomeDynamicXmlObject test = new SomeDynamicXmlObject(yourteststring);
var rep1 = test.SomeElement.rep1;
我能想到的最接近的方法是使用XElement类,如下所示:
XElement test = XElement.Parse(yourteststring);
var rep1 = test.Element("SomeElement").Element("rep1");
如果这还不够好,恐怕您将不得不自己编写一些东西来解析xml并动态创建对象。 如果您事先知道xml的外观,则可以使用shekhars代码,但是从您的评论中我猜您并没有。
如果您有可用的xml模式,并且在开发/构建环境中需要使用xml模式,则将采用一种绕行方式
没有dev env依赖项的另一种(不是简单的方法,而是更快的)方法是解析xml并使用反射生成动态类型。 请参阅本文以检查如何使用Reflection.Emit
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.