簡體   English   中英

XmlWriter包括每個標簽的名稱空間\\模式

[英]XmlWriter including namespace\schema for each tag

我需要使用XmlWriter在XML中創建一個文件,其中包括每個標簽的namespace \\ schema。 首先,我有一個由xsd模式文件生成的類,我用所有對象創建了該類,最后我將寫xml的類序列化了:

myclass root = new myclass();
root.val1 = "temp1";
root.val2 = "temp2";

[...]

using (XmlWriter writer = XmlWriter.Create(Path.Combine("myfile.xml"), s))
{
    serializer.Serialize(writer, root);

問題是它創建了這樣的標簽:

<Message>
    <val1> temp1 </val1>
    <val2> temp2 </val2>
<Message>

我想將標簽寫為:

<temp:Message>
    <temp:val1> temp1 </val1>
    <temp:val2> temp2 </val2>
<temp:Message>

我可以在課堂上使用一些屬性來添加temp:起始標簽嗎?

我還需要在根標簽中添加一些名稱空間:

<temp:Message
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="myxml.xsd"
    xmlns:stf="urn:oecd:ties:stf:v4"
    xmlns:mesage="urn:oecd:ties:cbc:v1"
    xmlns:iso="urn:oecd:ties:isocbctypes:v1"
    version="1.0"> 

所以我需要添加到根類:

1) xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2) xsi:schemaLocation="myxml.xsd"
3) xmlns:mesage="urn:oecd:ties:cbc:v1"
4) etc...

我怎樣才能做到這一點?

您可以通過執行以下操作來附加temp ,將名稱空間附加到xml中

var xsn = new XmlSerializerNamespaces();
xsn.Add("temp", "http://namespaceforxml");
XmlSerializer s = new XmlSerializer(typeof(Message));
Message msg = new Message(); 
// Writing a file requires a TextWriter.
TextWriter t = new StreamWriter(filename);
s.Serialize(t,msg,ns);
t.Close();

如下裝飾小腿

[XmlRoot(ElementName = "Message", Namespace = "//namespaceforxml")]
public class Message
{
    [XmlElement(ElementName = "val1")]
    public string val1{ get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM