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,看看它是否会在调用 Save 时停止插入换行符:

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

一种折衷方案是:

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 回答