我有一个csproj
文件,它遍历并注释了其中的某些节点。由于我想避免全部指定名称空间(LINQ2XML查询来自我的类的使用者,而他们不想指定名称空间),因此我设置:
var xmlTextReader = new XmlTextReader(_path) {
Namespaces = false // avoid that hassle...
};
但是我无法输出文档:
var xmlTextReader = new XmlTextReader(_path) {
Namespaces = false // avoid that hassle...
};
XDocument doc = XDocument.Load(xmlTextReader, LoadOptions.SetLineInfo | LoadOptions.PreserveWhitespace);
xmlTextReader.Close();
Do_some_stuff_with_doc_like_run_queries_and_comment_certain_node(doc);
var flattenedXmlContent = doc.ToString(); // throws System.Xml.XmlException:
// 'The prefix '' cannot be redefined from '' to 'http://schemas.microsoft.com/developer/msbuild/2003' within the same start element tag.'
Console.WriteLine(flattenedXmlContent);
doc.ToString()
抛出上面评论中描述的异常,我是否更改doc
。
我知道我删除了名称空间,这就是问题的原因,但是如何既允许查询不包含名称空间又保持序列化的能力呢?