0

に基づいて特定のノードからの情報をテキストボックスに入力していますConfirmNum。次に、すべての情報が更新されたら、情報を(送信ボタンで)特定のノードに保存します。

ただし、保存すると、空だったXMLファイル内のすべてのノードが別の行にドロップダウンします。

保存前のXMLの例:

<OnlineBanking>
  <Transactions>
    <Txn>
      <Login></Login>
      <UserName>userName</UserName>
      <CustomerName>CustomerName</CustomerName>
      <ConfirmNum>1234</ConfirmNum>
    </Txn>
  </Transactions>
</OnlineBanking>

私のコード(以下)は、番号に基づいて、そのノードの情報を保存しますPage.aspx?CID=1234。ただし、XMLファイル全体の空白であったすべてのノードには、改行が含まれるようになります。Txn編集したばかりだけでなく、すべて。

これが私のコードです:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    XmlDocument item = new XmlDocument();
    item.Load(xmlFileName);
    if (CID != "")
    {
        XmlNode xlist = item.SelectSingleNode("OnlineBanking/Transactions/Txn[ConfirmNum=" + CID + "]");
        if (xlist != null)
        {
            xlist.ChildNodes.Item(0).InnerText = tbLogin.Text;
            xlist.ChildNodes.Item(1).InnerText = tbUserName.Text;
            xlist.ChildNodes.Item(2).InnerText = tbCustomerName.Text;
            item.Save(xmlFileName);
        }
    }
}

保存後のXMLの例:

<OnlineBanking>
  <Transactions>
    <Txn>
      <Login>
      </Login>
      <UserName>userName</UserName>
      <CustomerName>CustomerName</CustomerName>
      <ConfirmNum>1234</ConfirmNum>
    </Txn>
  </Transactions>
</OnlineBanking>

<login>が。以外の行にあることに注意してください</login>。これが私が話していることです。誰かが私がしていないことをはっきりと見ることができることを願っています。

4

2 に答える 2

0

PreserveWhitespaceプロパティをTrueに設定して、保存を呼び出したときに改行の挿入が停止するかどうかを確認してください。

XmlDocument item = new XmlDocument();
item.PreserveWhitespace = true;
item.Load(xmlFileName);
于 2011-07-14T20:22:16.820 に答える
0

1つの妥協点は次のとおりです。

if(string.IsNullOrWhiteSpace(tbLogin.Text))
   xlist.ChildNodes.Item(0).IsEmpty = true;
else
   xlist.ChildNodes.Item(0).InnerText = tbLogin.Text;

これはあなたに与えるでしょう:

<Login />
于 2011-07-14T20:33:10.780 に答える