出於某種原因,下面的代碼生成的XML不包含聲明:我的XDeclaration在哪裏?
XDocument xDocument = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),
new XElement("project",
new XAttribute("number", project.ProjectNumber),
new XElement("store",
new XAttribute("number", project.StoreNumber)
),
// User Element
new XElement("user",
new XAttribute("owner-id", project.OwnerID ?? 0),
new XElement("email", new XCData(project.OwnerEmail ?? "")),
new XElement("project-name", new XCData(project.ProjectName ?? ""))
),
// Nested Project Element
new XElement("nested-project",
new XAttribute("version", new Version(1, 0)),
new XElement("project",
new XAttribute("version", new Version(1, 0)),
xProjectItems = new XElement("project-items")
),
new XElement("price-per-part", project.PricePerPart),
new XElement("sheet-quantity", project.SheetQuantity),
new XElement("edge-length", project.EdgeLength),
new XElement("price", project.Price),
new XElement("status", project.Status),
xMaterialItems = new XElement("alternative-material-items"),
xProductItems = new XElement("project-product-items")
)
)
);
String strXML = xDocument.ToString();
它之前生產的聲明。我錯過了明顯的東西嗎?
謝謝。
+1我應該在我的答案中使用了StringWriter。衛生署! =] – rsbarro 2011-06-07 18:55:40
這是跛腳。不是你的解決方案(這很酷 - 我沒有意識到你可以用'StringWriter'來完成)。微軟會這樣做的跛腳。我沒有將這個XML保存到一個文件中,而是將它傳遞給一個流。 'XDocument'和'XElement'有什麼區別。我的意思是它們很相似,但應該有一些區別。如果有人不希望字符串中的聲明,那麼你可能只是這樣做:'xMyDocument.Root.ToString();' – Jordan 2011-06-07 19:06:31
@Jordan我想的理由是,一個XDocument代表整個文檔,並且是的XElement片段的XML。儘管如此,它們非常相似。 – 2011-06-07 19:20:13