Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用.NET读写XML进行数据处理_.net_C++_Xml - Fatal编程技术网

用.NET读写XML进行数据处理

用.NET读写XML进行数据处理,.net,c++,xml,.net,C++,Xml,我在做一个用数学模型进行生理模拟的项目。我们目前使用JSim的数学建模语言中定义的模型,因为研究人员广泛使用JSim。基本上,模型包含变量(带有公式、初始值和可选单位)和常量参数(带有值和可选单位)。变量和参数在内部由相同的数据类型表示,因为两者之间的唯一区别在于是否有公式 我们还允许变量具有MML不支持的额外关联数据(解剖信息)。用户可以加载标准MML模型并根据需要进行编辑。保存这些编辑后,如果使用MML语法保存模型,则会丢失额外的数据 我当前的解决方案是将模型保存为XML,而不是MML文本文

我在做一个用数学模型进行生理模拟的项目。我们目前使用JSim的数学建模语言中定义的模型,因为研究人员广泛使用JSim。基本上,模型包含变量(带有公式、初始值和可选单位)和常量参数(带有值和可选单位)。变量和参数在内部由相同的数据类型表示,因为两者之间的唯一区别在于是否有公式

我们还允许变量具有MML不支持的额外关联数据(解剖信息)。用户可以加载标准MML模型并根据需要进行编辑。保存这些编辑后,如果使用MML语法保存模型,则会丢失额外的数据

我当前的解决方案是将模型保存为XML,而不是MML文本文件:

<model xmlns="http://tempuri.org/model_schema.xsd">
    <name>sample_model</name>
    <description>String</description>
    <variable type="realDomain" constant="false">
        <name>ID_1</name>
        <formula>G_p/VG</formula>
        <value>0.75</value>
        <units>s^-1</units>
        <description>String</description>
        <anatomical_structure FMAID="62970">
            <name>Kidney</name>
        </anatomical_structure>
    </variable>
    <variable type="real" constant="true">
        <name>ID_2</name>
        <formula />
        <value>1000</value>
        <units>mg</units>
    </variable>
</model>

样本模型
一串
ID_1
G_p/VG
0.75
s^-1
一串
肾
ID_2
1000
镁
这是我正在使用的模式:

<xs:schema id="model_schema" targetNamespace="http://tempuri.org/model_schema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/model_schema.xsd" xmlns:mstns="http://tempuri.org/model_schema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="model">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string" />
                <xs:element name="description" type="xs:string" minOccurs="0" />
                <xs:element name="variable" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="name" type="xs:ID" />
                            <xs:element name="formula" type="xs:string" />
                            <xs:element name="value" type="xs:float" />
                            <xs:element name="units" type="xs:string" minOccurs="0" />
                            <xs:element name="description" type="xs:string" minOccurs="0" />
                            <xs:element name="anatomical_structure" minOccurs="0">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="name" type="xs:string" />
                                    </xs:sequence>
                                    <xs:attribute name="FMAID" type="xs:int" use="required" />
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="constant" type="xs:boolean" use="required" />
                        <xs:attribute name="type" type="var_type" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="var_type">
        <xs:restriction base="xs:string">
            <xs:enumeration value="realDomain" />
            <xs:enumeration value="real" />
            <xs:enumeration value="int" />
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

有更好的方法吗?我没有太多的生成XML的经验,也从未编写过模式,所以我不知道是否存在严重的问题

以编程方式生成XML的最佳方法是什么?现在我正在使用XmlDocument。如何在文档中设置架构位置?XSD文件将与应用程序捆绑在一起,而不是托管在服务器上


生成XML后,如何读取/加载它?我所看到的大多数信息都是LINQ,但项目使用.NET 2和C++。XmlReader是最好的选择吗?或者我应该使用System.Xml.Serialization进行读写吗?我错过了什么重要的东西吗?

一个简单的方法是针对模式运行XSD.EXE程序。这将生成一组类。XML序列化程序可用于将XML文件中的数据加载到类实例中,并在更改后将其序列化回XML


看起来像是声称生产C++代码。< /P> /language: The language to use for the generated code. Choose from 'CS', 'VB', 'JS', 'VJS', 'CPP' or provide a fully-qualified name for a class implementing System.CodeDom.Compiler.CodeDomProvider. The default language is 'CS' (CSharp). Short form is '/l:'. /语言: 用于生成代码的语言。从“CS”、“VB”、“JS”中选择, “VJS”、“CPP”或为实现 System.CodeDom.Compiler.CodeDomProvider。默认语言 是‘CS’(CSharp)。缩写为“/l:”。
一种简单的方法是针对模式运行XSD.EXE程序。这将生成一组类。XML序列化程序可用于将XML文件中的数据加载到类实例中,并在更改后将其序列化回XML


看起来像是声称生产C++代码。< /P> /language: The language to use for the generated code. Choose from 'CS', 'VB', 'JS', 'VJS', 'CPP' or provide a fully-qualified name for a class implementing System.CodeDom.Compiler.CodeDomProvider. The default language is 'CS' (CSharp). Short form is '/l:'. /语言: 用于生成代码的语言。从“CS”、“VB”、“JS”中选择, “VJS”、“CPP”或为实现 System.CodeDom.Compiler.CodeDomProvider。默认语言 是‘CS’(CSharp)。缩写为“/l:”。
XSD.EXE不会生成C++类,所以我认为这不会工作。来自/的信息?确实包括CPP作为选项,但MSDN文档()没有:“从CS(C#,这是默认值)、VB(Visual Basic)、JS(JScript)或VJS(Visual J#)中进行选择。”您是否意识到(VS80)表示您正在查看旧信息?在那篇文章的右侧靠近顶部的地方,有一个面板可以获取其他版本。看看3.5版本是否修复了文档。我使用的是VS2005/.NET2.0,所以我需要的是旧的信息。3.5文档也说明了同样的问题。我建议您使用更晚的版本,因为它更有可能已经更新。如果不这样说,它不太可能是针对3.5的。因为文档是错误的,所以应该使用反馈链接来表示。XSD.EXE不会产生C++类,所以我认为这不会工作。有趣。来自/的信息?确实包括CPP作为选项,但MSDN文档()没有:“从CS(C#,这是默认值)、VB(Visual Basic)、JS(JScript)或VJS(Visual J#)中进行选择。”您是否意识到(VS80)表示您正在查看旧信息?在那篇文章的右侧靠近顶部的地方,有一个面板可以获取其他版本。看看3.5版本是否修复了文档。我使用的是VS2005/.NET2.0,所以我需要的是旧的信息。3.5文档也说明了同样的问题。我建议您使用更晚的版本,因为它更有可能已经更新。如果不这样说,它不太可能是针对3.5的。由于文档是错误的,您应该使用反馈链接这样说。