2010-11-11 17 views
7

मेरे पास एक कस्टम ऑब्जेक्ट है जिसमें 'नाम' नामक स्ट्रिंग प्रॉपर्टी है, मैं सीरियलाइजेशन द्वारा जेनरेट किए गए एक्सएमएल को रखना चाहता हूं लेकिन 'नाइसनाम' नामक तत्व में एक विशेषता जोड़ें 'पूर्ण नाम' का। मैं केवल कुछ XSLT के लिए इस की जरूरत है तो मैं बदलने के लिए नहीं करना चाहतीस्ट्रिंग प्रॉपर्टी में एक्सएमएल एट्रिब्यूट जोड़ें

<TheObject> 
    <Name NiceName='Full name'>mr nobody</Name> 
</TheObject> 

:

<TheObject> 
    <Name>mr nobody</Name> 
</TheObject> 

यह मैं उत्पन्न करने के लिए चाहते हैं क्या है:

यह क्या मैं वर्तमान में है यदि संभव हो तो वर्ग काम करता है। अर्थात। स्ट्रिंग से कस्टम क्लास में नाम बदलना। सभी ऑब्जेक्ट्स में वही विशेषता होगी जो इसे कभी नहीं बदलेगी, इसे पूरी तरह से पढ़ा जा रहा है।

उत्तर

4

यदि आप नीचे के रूप में एक और प्रकार को परिभाषित संभव है:

public class Person 
{ 

    private string _name; 


    [XmlIgnore] 
    public string Name 
    { 
     get 
     { 
      return _name; 
     } 
     set 
     { 
      _name = value; 
      ThePersonName = new PersonName() 
           { 
            Name = FullName, 
            NiceName = _name 
           }; 
     } 
    } 

    [XmlElement(ElementName = "Name")] 
    public PersonName ThePersonName { get; set; } 

    public string FullName { get; set; } 

} 

public class PersonName 
{ 
    [XmlAttribute] 
    public string NiceName { get; set; } 

    [XmlText] 
    public string Name { get; set; } 
} 

का उपयोग

 XmlSerializer s = new XmlSerializer(typeof(Person)); 
     Person ali = new Person(); 
     ali.FullName = "Ali Kheyrollahi"; 
     ali.Name = "Nobody"; 
     s.Serialize(new FileStream("ali.xml",FileMode.Create), ali); 

तैयार करेगा

<?xml version="1.0"?> 
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Name NiceName="Nobody">Ali Kheyrollahi</Name> 
    <FullName>Ali Kheyrollahi</FullName> 
</Person> 
+0

जवाब के लिए धन्यवाद लेकिन मुझे क्या करना कोशिश कर रहा हूँ कोड नोड नाम के लिए एक विकल्प नहीं है व्यक्तियों का नाम मैं इसे xslt में लिखने के लिए शायद बेहतर जानता हूं, बस मैं इसे .NET से प्रबंधित करना चाहता हूं बल्कि xslt। मेरा मतलब है कि मुझे श्री जो ब्लॉग मेरे एक्सएसएलटी में मैं केवल प्रत्येक तत्व के लिए निकनाम को आउटपुट करता हूं और एक बहुत अच्छा उपयोगकर्ता इंटरफ़ेस उत्पन्न करने के लिए मूल्य का उत्पादन करता हूं। "पूर्ण नाम = जो ब्लॉग" की बजाय "पूर्ण नाम = श्री जो ब्लॉग" या एक विकल्प 1234 Jammy

+0

मैं यह नहीं समझ सकता कि किसी अन्य संपत्ति में भाई स्तर की संपत्ति को कैसे लागू किया जाए विशेषता। मुझे लगता है कि अलीस्टाड का जवाब थोड़ा गन्दा लगता है लेकिन मुझे लगता है कि यह जाने का रास्ता है। – hunter

+0

आप xslt, srsly में ऐसा करने से बेहतर हैं। 'XmlSerializer' इस प्रकार के गर्भपात को संभाल नहीं सकता है। –

7

आप XMLAttribute और XmlText के संयोजन का उपयोग कर सकते हैं()

वर्ग घोषणा के उदाहरण नीचे ले:

public class Description { 
    private int attribute_id; 
    private string element_text; 

    [XmlAttribute("id")] 
    public int Id { 
     get { return attribute_id; } 
     set { attribute_id = value; } 
    } 

    [XmlText()] 
    public string Text { 
     get { return element_text; } 
     set { element_text = value; } 
    } 
} 

व्यवहृत किया जा सकेगा

<XmlDocRoot> 
<Description id="1">text</Description> 

संबंधित मुद्दे