2012-02-27 22 views
-1

私は、XMLとC#にLINQを使用して、次のXMLヘッダを再現することが必要で午前:LINQ-to-XMLで指定された属性を持つXMLヘッダーを作成する方法は?

<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"> 

を必要とするもののようなものを提供しますが、私は文字列にウェブURLからXAttributeパラメータを変更した場合(例えば、「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"> 

質問です:私はXMLにLINQによってヘッダの必要な形式を再現することができますか?そして、これらの属性の外観/消滅/命名の背後にある論理は何ですか?

答えて

0

これを試してみてください:

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") 
          ); 
関連する問題