C# 将XMLDocument转换为XDocument,将名称空间从xsi修改为p1
我创建一个XML文档: ` 然后,我使用下面的函数将其转换为XDocument,但我得到的名称空间更改如下C# 将XMLDocument转换为XDocument,将名称空间从xsi修改为p1,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我创建一个XML文档: ` 然后,我使用下面的函数将其转换为XDocument,但我得到的名称空间更改如下 XDocument ToXDocument(XmlDocument xmlDocument) { using (var nodeReader = new XmlNodeReader(xmlDocument)) { nodeReader.MoveToContent(); return XDocument.Load(nodeReader);
XDocument ToXDocument(XmlDocument xmlDocument)
{
using (var nodeReader = new XmlNodeReader(xmlDocument))
{
nodeReader.MoveToContent();
return XDocument.Load(nodeReader);
}
}
`下面是xml和XDocument
您需要在元素的开头手动显式添加xsi命名空间声明 节点按文档顺序处理,名称空间声明在首次使用后出现。它不知道如何使用
xsi
作为前缀,直到为时已晚
var doc = new XmlDocument();
doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", null));
var root = (XmlElement)doc.AppendChild(doc.CreateElement("BMECAT"));
var xsi = "http://www.w3.org/2001/XMLSchema-instance";
root.SetAttribute("xmlns:xsi", xsi); //set the namespace now
root.SetAttribute("schemaLocation", xsi, "http://www.adlnet.org/xsd/adlcp_v1p3");
root.SetAttribute("version", "2005");
最好是写下实际的xml文本,而不是发布图像,这样我们可以更清楚地看到它,甚至在必要时使用示例执行测试。我通常使用:XDocument.Parse(xmlDocument.ToString())实际上我的函数给出了预期的结果,但是我不明白为什么我的XML中的xsi会被p1放在XDocument中?谢谢Jeff Mercado,这正是我想要的。
var doc = new XmlDocument();
doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", null));
var root = (XmlElement)doc.AppendChild(doc.CreateElement("BMECAT"));
var xsi = "http://www.w3.org/2001/XMLSchema-instance";
root.SetAttribute("xmlns:xsi", xsi); //set the namespace now
root.SetAttribute("schemaLocation", xsi, "http://www.adlnet.org/xsd/adlcp_v1p3");
root.SetAttribute("version", "2005");