Мне нужно воспроизвести следующий XML-заголовок, используя LINQ to XML и C #:
<ns0:Subject_Sample xmlns:ns0="fhrb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="fhrb file:FHRB_NEW_SUBJECT_SAMPLE.xsd" >
Первая проблема заключается в том, что когда я адаптирую пример справки .NET, все начинает исчезать из моего заголовка. Например:
XElement myTree = new XElement(ns0 + "Subject_Sample",
new XAttribute(XNamespace.Xmlns + "ns0", "http://www.adventure-works.com" )
);
дает то, что мне нужно
<ns0:Subject_Sample xmlns:ns0="http://www.adventure-works.com">
но если я изменю параметр XAttribute с веб-URL на строку (например, "fhrb"), то по какой-то причине "ns0:" исчезнет из тега (ns0: Subject_Sample станет просто Subject_Sample).
Затем я решил попробовать сделать атрибут schemaLocation с помощью следующего кода:
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
XNamespace ns0 = "http://www.adventure-works.com";
XElement myTree = new XElement(ns0 + "Subject_Sample",
new XAttribute(XNamespace.Xmlns + "ns0", "http://www.adventure-works.com" ),
new XAttribute(xsi+"schemaLocation", "fhrb file:/fhrb.xsd"));
но результат, который я получил, был следующим: появился странный p1.
<ns0:Subject_Sample xmlns:ns0="http://www.adventure-works.com" p1:schemaLocation="fhrb file:/fhrb.xsd" xmlns:p1="http://www.w3.org/2001/XMLSchema-instance">
Вопрос: как я могу воспроизвести необходимый формат заголовка с помощью LINQ to XML? И какова логика появления / исчезновения / именования этих атрибутов ??