如何将matlab生成的XML解析为C#中的类对象 [英] How do I parse a matlab generated XML into class objects in C#

查看:76
本文介绍了如何将matlab生成的XML解析为C#中的类对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的所有



我从Simulink(Matlab 2017b)模型生成XML。我们的想法是将模型属性从XML转换为类对象(我使用的是C#.Net 4.5)。下面是生成的XML。



Dear All

I generated an XML from a Simulink (Matlab 2017b) model. The idea is to get the Model Properties from the XML into Class Objects (I am using C# .Net 4.5). Below in the generated XML.

<?xml version="1.0" encoding="utf-8"?>
<ModelInformation Version="1.0">
  <Model Name="MatlabToJenkinsIntegrationSample">
    <P Name="Version">9.0</P>
    <P Name="SavedCharacterEncoding">windows-1252</P>
    <GraphicalInterface>
      <P Name="NumRootInports">3</P>
      <Inport Name="Input1">
        <P Name="BusObject"/>
        <P Name="OutputFunctionCall">off</P>
        <P Name="SampleTime">-1</P>
        <P Name="UnitExpr">inherit</P>
      </Inport>
      <Inport Name="Input2 ">
        <P Name="BusObject"/>
        <P Name="OutputFunctionCall">off</P>
        <P Name="SampleTime">-1</P>
        <P Name="UnitExpr">inherit</P>
      </Inport>
      <Inport Name="MultiplicationFactor">
        <P Name="BusObject"/>
        <P Name="OutputFunctionCall">off</P>
        <P Name="SampleTime">-1</P>
        <P Name="UnitExpr">inherit</P>
      </Inport>
      <P Name="NumRootOutports">1</P>
      <Outport Name="Result">
        <P Name="BusObject"/>
        <P Name="BusOutputAsStruct">off</P>
        <P Name="UnitExpr">inherit</P>
      </Outport>
      <P Name="ParameterArgumentNames"/>
      <P Name="ComputedModelVersion">1.4</P>
      <P Name="NumModelReferences">0</P>
      <P Name="NumTestPointedSignals">0</P>
      <P Name="NumProvidedFunctions">0</P>
      <P Name="NumRequiredFunctions">0</P>
      <P Name="NumResetEvents">0</P>
      <P Name="HasInitializeEvent">0</P>
      <P Name="HasTerminateEvent">0</P>
      <P Name="IsExportFunctionModel">0</P>
      <P Name="NumParameterArguments">0</P>
      <P Name="NumExternalFileReferences">0</P>
      <P Name="OrderedModelArguments">1</P>
    </GraphicalInterface>
  </Model>
</ModelInformation>





我遇到的问题是它看起来不像我见过的任何传统XML 。



问题仍然存在,我将它们读入对象中。我查看了一个解决方案( [ Solution ])但它不适合这种XML。请建议一个方法。



我尝试过:





The issue I am having is that it does not look like any traditional XML I have seen.

Still the questions remain I do I read them into the objects. I looked at a solution ([Solution]) but it was not suitable for this kind of XML. Please suggest a way.

What I have tried:

I created classes to get the objects as shown below

<pre>public class Model
{
        
    public string Name { get; set; }
      
    public string Version { get; set; }
        
    public string SavedCharacterEncoding { get; set; }
       
    public GraphicalInterface TheGraphicalInterface { get; set; }
}







public class GraphicalInterface
{
    public List<Port> InPorts { get; set; }

    public List<Port> OutPorts { get; set; }
}







public class Port
{
       
    public string OutputFunctionCall { get; set; }
      
    public double SampleTime { get; set; }
   
    public string UnitExpression { get; set; }
}

推荐答案

它看起来不像任何传统的XML

it does not look like any traditional XML





你错了。这个xml有适当的形式。请参阅: XML属性 [ ^ ]。



我完全按照这里描述的那样做了: c# - 如何反序列化XML文档 - 堆栈溢出 [ ^ ]和 xsd.exe 工具生成的类与您的完全不同。按照以下步骤生成适当的类,以便能够使用xml序列化/反序列化。



You're wrong. This xml has proper form. See: XML attributes[^].

I did exactly what is described here: c# - How to Deserialize XML document - Stack Overflow[^] and the classes generated by xsd.exe tool are totally different then yours. Follow these steps and generate proper classes to be able to use xml serialization/deserialization.


这篇关于如何将matlab生成的XML解析为C#中的类对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆