0

テキストボックスの値をxmlファイルに書き込もうとしましたが、必要な正しい形式で取得できませんでした

次のコードを使用しています

XDocument Xdoc = new XDocument(new XElement("Users"));
if (System.IO.File.Exists("D:\\Users.xml"))
    Xdoc = XDocument.Load("D:\\Users.xml");
else
    Xdoc = new XDocument();

XElement xml = /*new XElement("Users",*/
new XElement("User",
             new XAttribute("UserId", txtUserId.Text),
             new XAttribute("Password", txtPwd.Text));

if (Xdoc.Descendants().Count() > 0)
    Xdoc.Descendants().First().Add(xml);
else
    Xdoc.Add(xml);

Xdoc.Save("D:\\Users.xml");

ここで、この形式でxmlを取得しています

<User UserId="Sunny" Password="Sunny">
<User UserId="Sunny" Password="Sunny" />
<User UserId="Sunny" Password="Sunny" />
</User>

でも、こんな風になりたい

<Users>
  <User>
    <UserId>Sunny</UserId>
    <Password>pwd</Password>
  </User>
  <User>
    <UserId>Sunny</UserId>
    <Password>pwd</Password>
  </User>
</Users>
4

5 に答える 5

1

私自身の答え

XDocument Xdoc = new XDocument(new XElement("Users"));
        if (System.IO.File.Exists("D:\\Users.xml"))
            Xdoc = XDocument.Load("D:\\Users.xml");
        else
        {
            Xdoc = new XDocument();
            XElement xmlstart = new XElement("Users");
            Xdoc.Add(xmlstart);
        }
        XElement xml = /*new XElement("Users",*/
                       new XElement("User",
          new XElement("UserId", txtUserId.Text),
          new XElement("Password", txtPwd.Text));

        if (Xdoc.Descendants().Count() > 0)
            Xdoc.Descendants().First().Add(xml);
        else
        {
            Xdoc.Add(xml);
        }

        Xdoc.Element("Users").Save("D:\\Users.xml");

これは私にxmlのようなものを与えています

<?xml version="1.0" encoding="utf-8"?>
<Users>
  <User>
  <UserId>Sunny</UserId>
  <Password>Sunny</Password>
 </User>
 <User>
   <UserId>Sunny</UserId>
   <Password>Sunny</Password>
 </User>
 <User>
   <UserId>Sunny</UserId>
   <Password>Sunny</Password>
 </User>
</Users>
于 2013-04-04T11:33:14.340 に答える
0

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

    var users= new XElement("Users");

    var userXml= new XElement("User",
                   new XElement("UserId", txtUserId.Text),
                   new XElement("Password", txtPwd.Text)
                   );

    users.Add(userXml);
于 2013-04-04T11:32:54.390 に答える
0

XAttribute から XElement に変更されました。のように要素内に属性が追加されるためです。要素は、ツリー XML 構造を形成するさまざまな役割を果たします。

ルート要素は、要件に従ってユーザーになりました。

XElement xml = new XElement("Users",   
                       new XElement("User",
                       new XElement("UserId", "sunny"),
                       new XElement("Password", "pwd")
                       ));

子要素を繰り返し追加する場合は、以下のコード ブロックを個別またはループで使用します。

xml.Add(
new XElement("User", new XElement("UserId", "sunny"), new XElement("Password", "pwd") ) );

完全なサンプルを参照してください

XDocument Xdoc = new XDocument(new XElement("Users"));
        if (System.IO.File.Exists("D:\\Users.xml"))
            Xdoc = XDocument.Load("D:\\Users.xml");
        else
            Xdoc = new XDocument();

       XElement xml = /*new XElement("Users",*/
                       new XElement("User",
                       new XElement("UserId", "sunny"),
                       new XElement("Password", "pwd")
                       );

        if (Xdoc.Descendants().Count() > 0)
            Xdoc.Descendants().First().Add(xml);
        else
        {
            Xdoc.Add(xml);
        }

        Xdoc.Save("D:\\Users.xml");
于 2013-04-04T11:11:48.507 に答える
0

値を要素として表示する場合は、XElement代わりにXAttribute...を使用する必要があります。

例えば

XElement xml = /*new XElement("Users",*/
                   new XElement("User",
                   new XElement("UserId", "sunny"),
                   new XElement("Password", "pwd")
                   );

これらの要素をルートの下に追加するには、次を使用します。

Xdoc.Element("Users").Add(xml);
于 2013-04-04T11:16:44.583 に答える