Yeni bir XML dosyası oluşturmak için Linq to XML kullanıyorum. Dosyanın bir kısmı var olan bir XML dosyasından aldım. Bunun için aşağıdaki kodu kullanıyorum.XElement bir xmlns ekler
var v2 = new XDocument(
new XDeclaration("1.0", "utf-16", ""),
new XComment(string.Format("Converted from version 1. Date: {0}", DateTime.Now)),
new XElement(ns + "keyem",
new XAttribute(XNamespace.Xmlns + "xsd", xsd.NamespaceName),
new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName),
new XAttribute(xsi + "schemaLocation", schemaLocation.NamespaceName),
new XAttribute("version", "2"),
new XAttribute("description", description),
new XElement(ns + "layout",
new XAttribute("type", type),
new XAttribute("height", height),
new XAttribute("width", width),
settings.Root) // XML from an existing file
Sorun şu ki, varolan dosyadan ilk öğeyi xmlns = "" ekler.
sonucudur:
<?xml version="1.0" encoding="utf-16"?>
<foo
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tempuri.org/KeyEmFileSchema.xsd KeyEmFileSchema.xsd"
xmlns="http://tempuri.org/KeyEmFileSchema.xsd">
<settings xmlns="">
...
</settings>
</foo>
böyle görünüyor gelen okuyorum XML dosyası, ancak
<?xml version="1.0" encoding="utf-16"?>
<settings>
<colormaps>
<colormap color="Gray" textcolor="Black"/>
<colormap color="DarkGray" textcolor="White"/>
<colormap color="Black" textcolor="White"/>
<colormap color="Cyan" textcolor="Black"/>
</colormaps>
<macromaps>
<macromap pattern="^@([0-9A-F]{2})\|([0-9A-F]{2})$" replace="{ESC}$1{ESC}$2{MOUSERESET}"/>
<macromap pattern="^\$([0-9A-F]{2})\|([0-9A-F]{2})$" replace="{USERCLICK}{ESC}$1{ESC}$2{MOUSERESET}"/>
<macromap pattern="^\$([0-9A-F]{2})$" replace="{USERCLICK}{ESC}$1"/>
</macromaps>
<keydefault color="Cyan"/>
<groupdefault color="DarkGray"/>
</settings>
Bunu anlıyorum, ancak bunu nasıl yaparım? Denedim varsayılanSettings.Name = ns + defaultSettings.Name.LocalName; Ama tüm alt öğeler için yapmalıyım. Daha iyi bir şey olmalı. – magol
Xslt tekniklerini kullanarak belgeyi dönüştürmeniz veya her bir öğeyi okumanız ve kodu dönüştürmeniz gerekir. Temel olarak, yüklediğiniz XDocument bu belgedeki her öğenin ad alanını bilir ve bunun foo ile aynı ad alanı olmadığını bilir. –
Okunduğum xml dosyasını, doğru isim işaretinde olması için değiştirebilir miyim? – magol