Как сделать заголовок XML с заданными атрибутами в LINQ-to-XML? - PullRequest
0 голосов
/ 27 февраля 2012

Мне нужно воспроизвести следующий 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? И какова логика появления / исчезновения / именования этих атрибутов ??

1 Ответ

0 голосов
/ 27 февраля 2012

Попробуйте это:

XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
XNamespace ns0 = "fhrb";
XElement myTree = new XElement(ns0 + "Subject_Sample",
                                  new XAttribute(XNamespace.Xmlns + "xsi", xsi),
                                  new XAttribute(XNamespace.Xmlns + "ns0", ns0),
                                  new XAttribute(xsi + "schemaLocation", "fhrb file:FHRB_NEW_SUBJECT_SAMPLE.xsd")
                              );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...