MrE*_*yes 7 c# xsd xmlnode xml-serialization
我的XML模式中有以下复杂类型:
<xs:complexType name="Widget" mixed="true">
<xs:sequence>
<xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
派生XML中的元素可以包含字符串或可以包含格式良好的XML,因此mixed属性为true.
当我通过.NET XSD工具运行时,我得到以下生成代码:
public partial class Widget{
private System.Xml.XmlNode[] anyField;
/// <remarks/>
[System.Xml.Serialization.XmlTextAttribute()]
[System.Xml.Serialization.XmlAnyElementAttribute()]
public System.Xml.XmlNode[] Any {
get {
return this.anyField;
}
set {
this.anyField = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我不完全确定我应该如何使用它.最终我需要能够将widget的值设置为:
<widget>Hello World!</widget>
Run Code Online (Sandbox Code Playgroud)
要么
<widget>
<foo>Hello World</foo>
</widget>
Run Code Online (Sandbox Code Playgroud)
这两个都验证了架构
为了这:
<widget>
<foo>Hello World</foo>
</widget>
Run Code Online (Sandbox Code Playgroud)
用这个:
XmlDocument dom = new XmlDocument();
Widget xmlWidget = new Widget();
xmlWidget.Any = new XmlNode[1];
xmlWidget.Any[0] = dom.CreateNode(XmlNodeType.Element, "foo", dom.NamespaceURI);
xmlWidget.Any[0].InnerText = "Hello World!";
Run Code Online (Sandbox Code Playgroud)
为了这:
<widget>Hello World!</widget>
Run Code Online (Sandbox Code Playgroud)
用这个:
XmlDocument dom = new XmlDocument();
XmlNode node = dom.CreateNode(XmlNodeType.Element, "foo", dom.NamespaceURI);
node.InnerText = "Hello World";
Widget w = new Widget();
w.Any = new XmlNode[1];
w.Any[0] = node.FirstChild;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3266 次 |
| 最近记录: |