0

コードを使用して、このような XML ドキュメントを生成しようとしています。

<TestRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://localhost:2292/RMSchema.xsd">
    <Version>3</Version>
    <ApplicationHeader>
        <AppLanguage />
        <UserId>rmservice</UserId>
    </ApplicationHeader>
    <CustomerData>
        <ExistingCustomerData>
            <MTN>2084127182</MTN>
        </ExistingCustomerData>
    </CustomerData>
</TestRequest>

サンプルをいくつか試してみました。しかし、彼らは私が必要としない子供たちのためにxmlnsを作成します。どんな助けでも本当に感謝しています。

以下のコードを試しました。しかし、すべての子にxmlnsのみを追加していますが、これは必要ありません

XmlDocument xDocument = new XmlDocument();
xDocument.AppendChild(xDocument.CreateXmlDeclaration("1.0", "windows-1252", null));
XmlElement xRoot = xDocument.CreateElement("TestRequest", "XNamespace.Xmlns=http://www.w3.org/2001/XMLSchema-instance" + " xsi:noNamespaceSchemaLocation=" + "http://localhost:2292/RMSchema.xsd");
xDocument.AppendChild(xRoot);
xRoot.AppendChild(xDocument.CreateElement("Version")).InnerText = 1;

ありがとうチュチュ

私は試してみました

var xsi = "http://www.w3.org/2001/XMLSchema-instance";
            XmlElement xRoot = xDocument.CreateElement("xsi","RMRequest",xsi);
            xRoot.SetAttribute("noNamespaceSchemaLocation", xsi, "http://localhost:2292/RMSchema.xsd");

            xDocument.AppendChild(xRoot);
Now the response is 

<?xml version=\"1.0\" encoding=\"windows-1252\"?><xsi:TestRequest xsi:noNamespaceSchemaLocation=\"http://localhost:2292/RMSchema.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
4

2 に答える 2

3

これがすばらしい LINQ to XML です。楽しみ!

XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
XDocument doc = new XDocument(new XDeclaration("1.0", "windows-1252", null),  
    new XElement("TestRequest",
        new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
        new XAttribute(xsi + "noNamespaceSchemaLocation", "http://localhost:2292/RMSchema.xsd"),
        new XElement("Version",
                new XText("3")
        ),
        new XElement("ApplicationHeader",
                new XElement("AppLanguage"),
                new XElement("UserId",
                        new XText("rmservice")
                )
        ),
        new XElement("CustomerData",
            new XElement("ExistingCustomerData",
                new XElement("MTN", 
                    new XText("2084127182")
                )
            )
        )
    )
);

doc.Save(filePath);

本当に古い API が必要な場合は、次のとおりです。

var xDocument = new XmlDocument();
xDocument.AppendChild(xDocument.CreateXmlDeclaration("1.0", "windows-1252", null));

var xsi = "http://www.w3.org/2001/XMLSchema-instance";
var xRoot = xDocument.CreateElement("TestRequest");

var attr = xDocument.CreateAttribute("xsi", "noNamespaceSchemaLocation", xsi);
attr.Value = "http://localhost:2292/RMSchema.xsd";
xRoot.Attributes.Append(attr);

xRoot.AppendChild(xDocument.CreateElement("Version")).InnerText = "1";

// ..  your other elemets ...

xDocument.AppendChild(xRoot);
xDocument.Save(filePath);

編集:あなたのコメントから、xmlns:xsiその特定の順序で and other 属性が必要なようです。その場合は、最初にアトリビュートXmlDocumentを追加するようにだまさなければならない場合があります。xmlns:xsi

var xDocument = new XmlDocument();
xDocument.AppendChild(xDocument.CreateXmlDeclaration("1.0", "windows-1252", null));

var xsi = "http://www.w3.org/2001/XMLSchema-instance";
var xRoot = xDocument.CreateElement("TestRequest");

// add namespace decl are attribute
var attr = xDocument.CreateAttribute("xmlns:xsi");
attr.Value = xsi;
xRoot.Attributes.Append(attr);

// no need to specify prefix, XmlDocument will figure it now
attr = xDocument.CreateAttribute("noNamespaceSchemaLocation", xsi);
attr.Value = "http://localhost:2292/RMSchema.xsd";
xRoot.Attributes.Append(attr);

xRoot.AppendChild(xDocument.CreateElement("Version")).InnerText = "1";

// ..  your other elemets ...

xDocument.AppendChild(xRoot);
xDocument.Save(filePath);
于 2013-10-15T18:28:24.073 に答える
0

あなたはこのようなものを探しています:-

XmlDocument xmldoc = new XmlDocument();
XmlNode root = xmldoc.AppendChild(xmldoc.CreateElement("Root"));
XmlNode child = root.AppendChild(xmldoc.CreateElement("Child"));
XmlAttribute childAtt =child.Attributes.Append(xmldoc.CreateAttribute("Attribute"));
childAtt.InnerText = "My innertext";
child.InnerText = "My node Innertext";
xmldoc.Save("ABC.xml");
于 2013-10-15T17:44:49.150 に答える