使用xsi:schemaLocation命名空间创建XDocument
我需要创建以下XML,我正在尝试使用XDocument执行此操作。 但是,我在指定名称空间时遇到了问题。
这是我正在寻找的那种代码,但是,我无法在xsi:schemaLocation
的名称中使用冒号创建属性。
return new XDocument( new XElement("AssessmentOrderRequest", new XAttribute("xsi:schemaLocation", XNamespace.Get("http://ns.hr-xml.org/2007-04-15 http://ns.hr-xml.org/2_5/HR-XML-2_5/StandAlone/AssessmentOrderRequest.xsd")), new XAttribute("xmlns", XNamespace.Get("http://ns.hr-xml.org/2007-04-15")), new XAttribute(XNamespace.Xmlns + "xsi", XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance")) ) );
这是因为xsi
本身就是一个命名空间。 您需要执行以下操作:
XNamespace xmlns = XNamespace.Get("http://ns.hr-xml.org/2007-04-15"); XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); XNamespace schemaLocation = XNamespace.Get("http://ns.hr-xml.org/2007-04-15 http://ns.hr-xml.org/2_5/HR-XML-2_5/StandAlone/AssessmentOrderRequest.xsd"); return new XDocument( new XElement(xmlns + "AssessmentOrderRequest", new XAttribute(XNamespace.Xmlns + "xsi", xsi), new XAttribute(xsi + "schemaLocation", schemaLocation) ) );
编辑:更新了我用来解决问题的最终代码。 感谢James的原始回答。
- C#Reflection:使用字符串类名实例化对象
- 该操作已超时使用WebClient.DownloadFile并更正了url
- 在MVC cshtml中每行显示三列
- 使用WebAPI流式传输大型文件(超过IIS 2GB)
- IsolatedStorageFileStream上不允许操作。 错误
- Repeater或DataList中的复选框OnClick / ItemCommand
- 如何通过扩展方法,静态类中的方法以及使用Roslyn的ref / out参数的方法来访问调用
- DropdownStyle是DropDownList时如何更改ComboBox的BackColor?
- 我如何GetCustomAttributes?