Sla*_*uma 5 .net xml xsd xmlserializer
我有一个XML架构,如:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="MySchema"
targetNamespace="http://tempuri.org/MySchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/MySchema.xsd"
xmlns:mstns="http://tempuri.org/MySchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="MyDocument">
<xs:complexType>
<xs:all>
<xs:element name="TextHeader" type="xs:string" minOccurs="0" />
<xs:element name="TextBody" type="xs:string" minOccurs="0" />
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
根据此模式的有效XML文档将是:
<?xml version="1.0" encoding="utf-8" ?>
<MyDocument xmlns="http://tempuri.org/MySchema.xsd">
<TextHeader>My header which is almost always the same...</TextHeader>
<TextBody>My text body which is always different...</TextBody>
</MyDocument>
Run Code Online (Sandbox Code Playgroud)
问题1:有没有办法从其他文件中"包含"TextHeader元素?
像这样:
文件"Header.xml":
<?xml version="1.0" encoding="utf-8" ?>
<MyDocument xmlns="http://tempuri.org/MySchema.xsd">
<TextHeader>My Header which is almost always the same...</TextHeader>
</MyDocument>
Run Code Online (Sandbox Code Playgroud)
文件"CompleteDocument.xml":
<?xml version="1.0" encoding="utf-8" ?>
<MyDocument xmlns="http://tempuri.org/MySchema.xsd">
include "Header.xml" ???
<TextBody>My text body which is always different...</TextBody>
</MyDocument>
Run Code Online (Sandbox Code Playgroud)
问题2:如果可能的话,.NET XMLSerializer是否能够解析和理解包含这样的"包含......"的文档?
提前感谢您的帮助!
这两个问题都不是。您可以编写一些代码(例如 app.config 如何允许导入部分,或者 xslt 如何处理包含/导入),但这不是内置到任何 XML 规范中的,并且不会与现有架构匹配。基本上,你必须自己做所有事情。
如果您确实想走这条路,那么编写一个自定义 XmlReader 来识别特定元素(在特定 xmlns 中)并在此时默默地合并 - 也许是更好的选择。