मैं एक तरह से वास्तव में दांतेदार रूप में एक XML स्ट्रिंग रास्ता दृश्य स्टूडियो अपने ऑटो के साथ यह होता है कि फ़ॉर्मेट करने के लिए नेट की XmlWriter और संबद्ध XmlWriterSettings का उपयोग नहीं कर पाया है प्रारूप कमांड (Ctrl-E Ctrl-D, या, कीबोर्ड मैपिंग के आधार पर, Ctrl-K Ctrl-D)।प्रोग्राम प्रारूप एक्सएमएल
मैं क्योंकि ऐसा करने के लिए करना चाहते हैं मैं आदतन ऑटो प्रारूप वी.एस. में अपने सभी फाइलें, दोनों कोड और .Config फ़ाइलों। मेरे पास एक इंस्टॉलर ऐप है जो अद्यतन .config फ़ाइलों को अद्यतन करता है, और मैं पूरे दस्तावेज़ के बदले वास्तविक अंतर देखना चाहता हूं।
मैंने ऑटो-प्रारूप के लिए सभी अलग-अलग स्वरूपण विकल्पों की खोज नहीं की है, लेकिन मुझे प्रत्येक एक्सएमएल विशेषता को एक अलग पंक्ति पर होना पसंद है, पहले के समान लाइन के समान लाइन के साथ और बाद वाले लोगों के साथ पहले, इस तरह:
<asset assetId="12345"
bucket="default"
owner="nobody">
<file path="\\localhost\share\assetA.mov"/>
<metadata metadataId="23456"
key="asset_type"
value="video"/>
</asset>
मैं के साथ प्रारूपित की कोशिश की है XmlWriterSettings गुण 'NewLineHandling = NewLineHandling.None' और 'NewLineOnAttributes = सच', लेकिन वह खुलने वाला टैग नीचे पहली विशेषता डालता है और सभी विशेषताओं के एक ही है तत्व नाम में वर्णों की # की परवाह किए बिना खरोज, इस तरह:
<asset
assetId="12345"
bucket="default"
owner="nobody">
<file
path="\\localhost\share\assetA.mov" />
<metadata metadataId="23456"
key="asset_type"
value="video" />
</asset>
सूचना है कि मानक XmlWriter भी "/>" (अतिरिक्त स्लैश से पहले अंतरिक्ष) के साथ विशेषता-केवल तत्व है, जो मैं पसंद नहीं लेकिन यकीन नहीं है कि अगर XML मानक है समाप्त होता है। मुझे लगता है कि विजुअल स्टूडियो डेवलपर्स के लिए आसानी से उपलब्ध एक ही एपीआई विकल्प का उपयोग करता है, लेकिन मुझे अभी तक उन जादुई सेटिंग्स को नहीं मिला है। वैसे भी, यहां मेरी प्रारूप विधि है:
public static string FormatXml(string xmlString, bool indented)
{
using (TextReader textReader = new StringReader(xmlString))
using (XmlReader xmlReader = new XmlTextReader(textReader))
{
using (TextWriter textWriter = new StringWriter())
{
var settings = new XmlWriterSettings();
if (indented)
{
settings.Indent = true;
settings.IndentChars = " ";
settings.NewLineOnAttributes = true;
settings.NewLineHandling = NewLineHandling.None;
}
using (var xmlWriter = XmlWriter.Create(textWriter, settings))
{
while (xmlReader.Read())
xmlWriter.WriteNode(xmlReader, false);
}
return textWriter.ToString();
}
}
}
यह वहाँ नहीं है। उदाहरण के लिए –