ことを含まない:上記の要件で This Question名前空間接頭辞を持つC#の書き込みのXElementが、リファレンスを参照のルート要素で
このため
<root xmlns:ci="http://somewhere.com" xmlns:ca="http://somewhereelse.com">
<ci:field1>test</ci:field1>
<ca:field2>another test</ca:field2>
</root>
とコードを書くことですが
が与えられ、しかし、私の要求は書くことです。
<myrootelement>
<ci:field1>test</ci:field1>
<ca:field2 ca:attrb1="value">another test</ca:field2>
</myrootelement>
この要素は、ciとcaの独自の名前空間参照を含む別の大きなXMLの一部になるためです。今、「<myrootelement>
」は、特定のXElementに子供のようにAPIを介して挿入されているので、私はXSDまたは名前空間などへのアクセスを持っていない
XElement element = new XElement("myrootelement",
new XElement(ci + "field1", "test"),
new XElement(ca + "field2", "another test", new XAttribute(ca + "attrb1", "value")));
が、その利回りしようとしました何
:
を<myrootelement>
<field1 xmlns="http://somewhere.com">test</field1>
<field2 p2:attrb1="value" xmlns:p2="http://somewhereelse.com" xmlns="http://somewhereelse.com">another test</field2>
</myrootelement>
編集:追加詳細
上記要素は、次いで使用のREST APIに送信されますそれはXML仕様に準拠していないので、このようなLINQからXMLへのあなたのためにそれを行うことができますようにXML APIを期待していないため
{
.
.
var client = new RestClient(uri);
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddParameter("text/xml", elem, ParameterType.RequestBody);
.
.
}
0私は、生成しようとしている要素タグが有効ではないことを知っています - あなたが ''をドキュメントのルート**と考える場合にのみ。 1.しかし、大きなXMLがすべての名前空間の参照を持っているので、大きなXMLの有効なサブツリーです。 –
私はそれが質問に記載されていることを認識しています。しかし、現在、あなたは 'XElement'を個別に作成しようとしています。あなたのコードのどこにも大きなXMLが記述されているので、その要素が他のXMLの一部であることを知る方法はありません – har07
'XElement'(それの文字列表現ではない)を大きなXMLつまり、名前空間の宣言は 'myrootelement'に追加されません。https://dotnetfiddle.net/U5LHep – har07