1

追加したい

xsi:noNamespaceSchemaLocation="FullModeDataset.xsd"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

ルートノード「ApplicationData」に関連付けられているため、ルートノードは次のようになります。

 <ApplicationData
  xsi:noNamespaceSchemaLocation="FullModeDataset.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

文字列からxmlを作成し、このコードで適切なxmlである文字列を出力しています。

var doc = new XmlDocument();
            doc.LoadXml(myInputXmlString);
            var ms = new MemoryStream();
            var tx = XmlWriter.Create(ms,
                        new XmlWriterSettings
                        {
                            OmitXmlDeclaration = false,
                            ConformanceLevel = ConformanceLevel.Document,
                            Encoding = UTF8Encoding.UTF8
                        });
            doc.Save(tx);

              //I TRIED THE COMMENTED CODE BELOW BUT WITH NO SUCCESS
             //XmlAttribute newAttr = doc.CreateAttribute("xsi:noNamespaceSchemaLocation");
             //newAttr.Value = "FullModeDataset.xsd";

            //XmlElement applicationNode = doc.DocumentElement["AppicationData"];
            //applicationNode.Attributes.Append(newAttr);
            //doc.Save(tx);

            var xmlString = UTF8Encoding.UTF8.GetString(ms.ToArray());

これらの属性をxml文字列に追加するにはどうすればよいですか?

4

1 に答える 1

5

以下に示すように、作成する属性のプレフィックスと名前空間URLを取得するオーバーロードを使用して属性を作成する必要があります。

public class StackOverflow_14128649
{
    public static void Test()
    {
        string myInputXmlString = @"<ApplicationData>
                                        <something>else</something>
                                    </ApplicationData>";
        var doc = new XmlDocument();
        doc.LoadXml(myInputXmlString);

        XmlAttribute newAttr = doc.CreateAttribute(
            "xsi", 
            "noNamespaceSchemaLocation", 
            "http://www.w3.org/2001/XMLSchema-instance");
        newAttr.Value = "FullModeDataset.xsd";
        doc.DocumentElement.Attributes.Append(newAttr);

        var ms = new MemoryStream();
        XmlWriterSettings ws = new XmlWriterSettings
        {
            OmitXmlDeclaration = false,
            ConformanceLevel = ConformanceLevel.Document,
            Encoding = UTF8Encoding.UTF8
        };
        var tx = XmlWriter.Create(ms, ws);
        doc.Save(tx);
        tx.Flush();

        var xmlString = UTF8Encoding.UTF8.GetString(ms.ToArray());
        Console.WriteLine(xmlString);
    }
}
于 2013-01-02T20:34:45.500 に答える