【发布时间】:2015-08-27 17:38:26
【问题描述】:
我有一个引用其他 XSD 文件的 XSD 文件。 Tomcat 应用程序使用它来生成带有水样结果的 XML 文件。 在 MVC 应用程序中,我需要查询数据库,取回行,并将它们转换为通过引用 XSD 文件格式化的 XML 文档。我现在唯一能想到的解决方案是拥有一个现有的 XML 文件并将标签放入字符串中,然后循环遍历字符串,用行的值替换标签。
.NET MVC5 中有什么可以做这样的事情吗?我难住了。 下面是一些相关的部分。
============================================
顶部的 XML 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<EN:eDWR xmlns:EN="urn:us:net:exchangenetwork"
xmlns:SDWIS="http://www.epa.gov/sdwis"
xmlns:ns3="http://www.epa.gov/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EN:Submission EN:submissionFileCreatedDate="2012-07-21"
EN:submissionFileName="B_14271BJB.csv" EN:submissionID="1">
<EN:LabReport>
<EN:LabIdentification>
<EN:LabAccreditation>
<EN:LabAccreditationIdentifier>OR100024</EN:LabAccreditationIdentifier>
<EN:LabAccreditationAuthorityName>STATE</EN:LabAccreditationAuthorityName>
</EN:LabAccreditation>
</EN:LabIdentification>
<EN:Sample>
<SDWIS:RecordID>155628</SDWIS:RecordID>
<EN:SampleIdentification>
<EN:LabSampleIdentifier>123321</EN:LabSampleIdentifier>
<EN:PWSIdentifier>OR4100237</EN:PWSIdentifier>
<EN:PWSFacilityIdentifier>DIST-A</EN:PWSFacilityIdentifier>
<EN:SampleRuleCode>TC</EN:SampleRuleCode>
<EN:SampleMonitoringTypeCode>RP</EN:SampleMonitoringTypeCode>
====================================
xsd 文件完成。它引用同一文件夹中的其他 xsd 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Leslie Flagler (SAIC) -->
<xsd:schema targetNamespace="urn:us:net:exchangenetwork" xmlns:SDWIS="http://www.epa.gov/sdwis" xmlns:EN="urn:us:net:exchangenetwork" xmlns:facid="http://www.epa.gov/xml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified" version="3.0">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:include schemaLocation="./EDWR_MetaData.xsd"/>
<xsd:include schemaLocation="./EDWR_ContactPoint.xsd"/>
<xsd:include schemaLocation="./SDWIS_LabReport.xsd"/>
<xsd:include schemaLocation="./EDWR_Authentication.xsd"/>
<xsd:element name="eDWR">
<xsd:annotation>
<xsd:documentation>This is the standard regulatory schema
approved by the USEPA and multi-state Lab to State
Drinking Water Integrated Project Team</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>This is enfoTech EDWR schema</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element ref="EN:MetaData" minOccurs="0"/>
<xsd:element ref="EN:Receiver" minOccurs="0"/>
<xsd:element ref="EN:Sender" minOccurs="0"/>
<xsd:element ref="EN:Submission"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="SubmissionDataType">
<xsd:annotation>
<xsd:documentation>Transction information</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element ref="EN:LabReport" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="EN:SubmissionCertification" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="submissionID" type="xsd:string"/>
<xsd:attribute name="submissionFileName" type="xsd:string"/>
<xsd:attribute name="submissionFileCreatedDate" type="xsd:date"/>
</xsd:complexType>
<xsd:element name="MetaData" type="EN:MetaDataDataType">
<xsd:annotation>
<xsd:documentation>General information about the schema</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Receiver" type="EN:ContactPointDataType">
<xsd:annotation>
<xsd:documentation>Regulatory agency and contact to receive
the e-DWR submission file</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Sender" type="EN:ContactPointDataType">
<xsd:annotation>
<xsd:documentation>The sender of the e-DWR submission file</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="LabReport" type="EN:LabReportDataType">
<xsd:annotation>
<xsd:documentation>Lab Analysis Report (includes Lead and
Copper Report, Water Quality Parameters, and
Bacteriological Analysis Report, etc)</xsd:documentation>
<xsd:documentation>Chemical Analysis Report (includes Lead
and Copper Report, Water Quality Parameters, and
Bacteriological Analysis Report)</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="SubmissionCertification" type="EN:AuthenticationDataType">
<xsd:annotation>
<xsd:documentation>Submission Certification</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Submission" type="EN:SubmissionDataType">
<xsd:annotation>
<xsd:documentation>Information pertaining to a drinking
water report submission</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:schema>
【问题讨论】:
-
为什么在编写代码生成xml时需要模式?作为软件验证的一部分,您应该在将 xml 输出到文件之后针对架构验证 xml。它不必动态执行。在 c# 中使用 XML Linq 生成 xml 非常简单。
-
Johnv2020:不,这没有帮助。当我尝试从 .xsd 文件生成类时,命令提示符返回了大量错误。 @jdweng:是的,你可能是对的。我会吃完午饭回来,朝那个方向走,然后回到这里做出回应。