2011-06-16 33 views
2

如何將以下樣式表信息插入到使用C#創建的現有xml文件中?在xml中添加一個文本行到特定位置?

<?xml-stylesheet type="text/xsl" href="_fileName.xsl"?> 

或....我可以在創建新XML文件時添加此行嗎?

編輯:

我試圖實現上述使用XmlSerialier(命中和審判),像這樣:

// assumes 'XML' file exists. 
XmlDocument doc = new XmlDocument(); 
XElement dataElements = XElement.Load("_fileName.xml"); 
XmlSerializer xs = new XmlSerializer(typeof(Parents)); 
var ms = new MemoryStream(); 
xs.Serialize(ms, parents); 
ms.Seek(0, SeekOrigin.Begin); // rewind stream to beginning 
doc.Load(ms); 
XmlProcessingInstruction pi; 
string data = "type=\"text/xsl\" href=\"_fileName.xsl\""; 
pi = doc.CreateProcessingInstruction("xml-stylesheet", data); 
doc.InsertBefore(pi, doc.DocumentElement); // insert before root 
doc.DocumentElement.Attributes.RemoveAll(); // remove namespaces 

但輸出XML是越來越損壞:

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="_fileName.xsl"?> 
<parents /> 

而期望的輸出是類似的:

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="_fileName.xsl"?> 
<parents> 
<parent> 
<Child1> 
<child2> 
</parent> 
</parents> 

這有助於瞭解我的問題?

+0

它是使用哪個庫在C#中創建的? – ub1k

+0

上述編輯是否以任何方式幫助你? – gsvirdi

回答

2

你沒有回答這個問題..「你用什麼庫」。

雖然我勸:

XDocument 

,如果你會使用它,你可以這樣做:

XDocument document = new XDocument(new XDeclaration("1.0", "utf-8", "yes")); 

document.Add(new XProcessingInstruction(
     "xml-stylesheet", "type=\"text/xsl\" href=\"_fileName.xsl\"")); 
//and then your actual document... 
document.Add(
    new XElement("parent", 
     new XElement("child1"), 
     new XElement("child2") 
    ) 
); 

編輯:

行,所以你可以做到這一點,如:

XDocument document = XDocument.Load("file"); 
document.AddFirst(new XProcessingInstruction(
    "xml-stylesheet", "type=\"text/xsl\" href=\"LogStyle.xsl\"")); 

這是什麼y你在找什麼?

+0

非空白字符不能添加到內容。在document.Add(new XDeclaration(「1.0」,「utf-8」,「yes」)); – gsvirdi

+0

確實 - >我弄糊塗了。編輯。現在檢查。 – ub1k

+0

Thx,這對於創建新的xml文件是完美的,但是當文件將被添加(添加新的子項)時,這個xsl信息將被刪除。如何在追加相同的xml文件時保留這個xsl信息? – gsvirdi

相關問題