【问题标题】:Display empty XML tags显示空的 XML 标记
【发布时间】:2019-12-03 09:53:23
【问题描述】:

如果标签没有任何值,我会从数据库中获取 XML,那么标签将是 <tag />。请参阅下面的示例 XML

<?xml version="1.0" encoding="UTF-8"?>
<Message>
    <Header>
        <To Qualifier="P">XXXXXX</To>
        <From Qualifier="D">YYYYYYYYY</From>
    </Header>
    <Body>
        <TestData>
            <Date>mm-dd-yyyy</Date>
            <Identifier></Identifier>
         </TestData>    
    </Body>
</Message>

它显示为

但预期应该是

请帮帮我

下面是使用的C#代码

private void Form1_Load(object sender, EventArgs e)
{
    XmlDataDocument xmldoc = new XmlDataDocument();
    XmlNode xmlnode;
    FileStream fs = new FileStream(@"<FilePath>", FileMode.Open, FileAccess.Read);
    xmldoc.Load(fs);
    xmlnode = xmldoc.ChildNodes[1];
    treeView1.Nodes.Clear();
    treeView1.Nodes.Add(new TreeNode(xmldoc.DocumentElement.Name));
    TreeNode tNode;
    tNode = treeView1.Nodes[0];
    AddNode(xmlnode, tNode);
    treeView1.ExpandAll();
}

private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
{
    XmlNode xNode;
    TreeNode tNode;
    XmlNodeList nodeList;
    int i = 0;
    if (inXmlNode.HasChildNodes)
    {
        nodeList = inXmlNode.ChildNodes;
        for (i = 0; i <= nodeList.Count - 1; i++)
        {
            xNode = inXmlNode.ChildNodes[i];
            inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
            tNode = inTreeNode.Nodes[i];
            AddNode(xNode, tNode);
        }
    }
    else
    {
        inTreeNode.Text = inXmlNode.InnerText.ToString();
    }
}

【问题讨论】:

  • 为什么不调试你的代码,单步执行它并最终找到向树添加/设置空字符串的点?您甚至可以使用数据断点。
  • @Keim,你投反对票了吗?是否有任何信息缺失或问题不正确?

标签: c# .net xml winforms


【解决方案1】:

试试这个:

var value = inXmlNode.InnerText.ToString()
inTreeNode.Text = string.IsNullOrEmpty(value) ? inXmlNode.Name : value;

【讨论】:

    猜你喜欢
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2010-12-13
    • 2011-03-19
    • 2014-12-31
    相关资源
    最近更新 更多