2
我有一個XML文件,而我要添加預定義的namespeces ..以下是代碼:命名空間添加到XML文件
private const string uri = "http://www.w3.org/TR/html4/";
private static readonly List<string> namespaces = new List<string> { "lun" };
public static XElement AddNameSpaceAndLoadXml(string xmlFile) {
var nameSpaceManager = new XmlNamespaceManager(new NameTable());
// add custom namespace to the manager and take the prefix from the collection
namespaces.ToList().ForEach(name => {
nameSpaceManager.AddNamespace(name, string.Concat(uri, name));
});
XmlParserContext parserContext = new XmlParserContext(null, nameSpaceManager, null, XmlSpace.Default);
using (var reader = XmlReader.Create(@xmlFile, null, parserContext)) {
return XElement.Load(reader);
}
}
的問題是,在內存中生成的XML並沒有顯示正確的命名空間添加。而且,它們不會添加到根目錄,而是添加到標籤旁邊。下面添加了Xml。 在xml中顯示的是p3:read_data
,而應該是lun:read_data
。
如何在根標籤上添加名稱空間並且不會獲取不正確的名稱。
樣品輸入XML:
<config file-suffix="perf">
<overview-graph title="Top 5 LUN Reads" max-series="5" remove-series="1">
<counters lun:read_data=""/>
</overview-graph>
</config>
輸出XML預期:
<config file-suffix="perf" xmlns:lun="http://www.w3.org/TR/html4/lun">
<overview-graph title="Top 5 LUN Reads" max-series="5" remove-series="1">
<counters lun:read_data="" />
</overview-graph>
</config>
輸出,使用上面的代碼來:
<config file-suffix="perf" >
<overview-graph title="Top 5 LUN Reads" max-series="5" remove-series="1">
<counters p3:read_data="" xmlns:p3="http://www.w3.org/TR/html4/lun"/>
</overview-graph>
</config>
我不清楚你真的想要做什麼。你已經展示了「示例XML」,但不知道它是輸入還是輸出。請顯示示例輸入和所需輸出。你絕對可以做到這一點,而不使用'XmlNamespaceManager'。 – 2012-07-24 06:05:05
爲什麼寫'namespaces.ToList()。foreach ...'''''''''''''''命名空間已經很不錯了,所以你可以寫'namespaces.Foreach ...' – harry180 2012-07-24 06:16:53
更新了輸入,輸出xml和使用代碼生成的xml。 – Arihant 2012-07-24 06:33:43