我尝试使用XmlSerializer将Document标记内的xmlns属性值设置为自定义值。 目前,我简化的xml看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<Document xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
<GrpHdr>
<Price Curency="EUR">
40.55
</Price>
</GrpHdr>
</Document>
我的简化代码如下所示:
public void Main(){
var document = new CustomDocument();
new XmlSerializer(typeof(CustomDocument)).Serialize(Console.Out, document);
}
[XmlRoot(ElementName = "Document")]
public class CustomDocument{
[XmlAttribute("schemaLocation", AttributeName = "schemaLocation",
Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public string SchemaLocation = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd";
[XmlElement("GrpHdr")
Public XmlHeader {get; set;}
Public XmlDocument(){
XmlHeader = new XmlHeader();
}
}
public class XmlHeader{
[XmlElement("Price")
Public string Price {get; set;}
public XmlHeader(){
Price = "40.55";
}
}
如何更改xmlns:xsd的值?添加[XmlElement(&#34; xmlns&#34;)]并不能解决问题
答案 0 :(得分:2)
不幸的是,你不允许这样做。 $(document).ajaxStart(function() {
});
var handlers = jQuery._data( document,"test","ajaxStart" );
console.log(handlers);
和xmlns:xsi
是保留的命名空间。您无法更改默认值,因为它是.Net框架中提供的标准架构定义的一部分。
我不确定你为什么要这样做但是如果你想添加你的架构xsd的命名空间匹配命名空间,那么你可以添加一个自定义命名空间,如:
xmlns:xsd
这将出现在你的xml中:
[XmlRoot(ElementName = "Document", Namespace = "http://customNameSpaceFromXsd/XMLSchema.xsd")]
public class CustomDocument{
}
答案 1 :(得分:1)
使用XML Linq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//<?xml version="1.0" encoding="utf-8"?>
//<Document xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
// <GrpHdr>
// <Price Curency="EUR">
// 40.55
// </Price>
// </GrpHdr>
//</Document>
string xml =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<Document xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd\">" +
"</Document>";
XDocument doc = XDocument.Parse(xml);
XElement document = (XElement)doc.FirstNode;
XNamespace xsd = document.GetNamespaceOfPrefix("xsd");
XNamespace xsi = document.GetNamespaceOfPrefix("xsi");
document.Add(new XElement("GrpHddr",
new XElement("Price", new object[] {
new XAttribute("Currency", "EUR"),
40.55
})
));
}
}
}