簡體   English   中英

添加xmlns名稱空間

[英]Adding xmlns namespaces

我真的很想問你這個問題,很多人可能認為這是一個簡單的問題,但是請幫助我在這個問題上工作幾個小時,而且距離解決方案還很近。 我真的需要這個拼貼畫。

我必須創建一個xml文檔,並且這個文檔工作正常。

現在,我需要定義名稱空間,或者至少我認為這就是它們。

我需要將此插入我的文檔中

  <language>
    <language id="1" tag="english"/>
    <language id="2" tag="english"/> 
  </language>

並像這樣使用它:

<item id="1">
  <item>
    <item language="1">Periods</item>
  </item>
<item/>

我的代碼:

XmlElement element = xmldoc.CreateElement("", "item", "1");

問題是,我得到了xmlns語言,在哪里可以定義名稱空間,以及如何創建<language id="1" tag="english"/> ?

我的問題是我不知道如何定義<language id="1" tag="english"/>並且我不知道如何使用這種<item language="1">Periods</item>

您可能會編寫一個簡單的類,例如,我使用了像這樣的Speech類:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace StackOverflowSamples
{
    [Serializable]
    public class Speech
    {
        public Speech()
        {
            this.Items = new List<LanguageItem>();
        }

        [XmlArray]
        public List<LanguageItem> Items;
    }

    [Serializable]
    public class LanguageItem
    {
        [XmlAttribute]
        public string Language { get; set; }

        [XmlAttribute]
        public int Id { get; set; }
    }
}

可以使用以下代碼簡單地對其進行序列化:

// use built in serialization mechanism
XmlSerializer mySerializer = new XmlSerializer(typeof(Speech));
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter("test.xml");

var speech = new Speech();
var lang1 = new LanguageItem() { Id = 1, Language = "English", };
var lang2 = new LanguageItem() { Id = 2, Language = "Slovenian", };
speech.Items.Add(lang1);
speech.Items.Add(lang2);

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
//Add an empty namespace and empty value
ns.Add("", "");

mySerializer.Serialize(writer, speech, ns);
writer.Close();

這樣產生的XML如下:

<?xml version="1.0" encoding="utf-8"?>
<Speech>
  <Items>
    <LanguageItem Language="English" Id="1" />
    <LanguageItem Language="Slovenian" Id="2" />
  </Items>
</Speech>

暫無
暫無

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

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