我正在根据特定节点的ConfirmNum填充文本框中的信息。然后,当更新所有信息时,我将信息(通过提交按钮)保存回特定节点。
但是,保存后,文件中每个为空的节点都会下降到另一行。
保存前的示例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>上的。这就是我要说的。希望有人能清楚地看到我没在做什么。
发布于 2011-07-14 20:22:16
尝试将PreserveWhitespace属性设置为True,并查看它在调用Save时是否会停止插入换行:
XmlDocument item = new XmlDocument();
item.PreserveWhitespace = true;
item.Load(xmlFileName);发布于 2011-07-14 20:33:10
一个折衷办法是:
if(string.IsNullOrWhiteSpace(tbLogin.Text))
xlist.ChildNodes.Item(0).IsEmpty = true;
else
xlist.ChildNodes.Item(0).InnerText = tbLogin.Text;这将给你:
<Login />https://stackoverflow.com/questions/6699410
复制相似问题