首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向XmlElement添加XmlNode

向XmlElement添加XmlNode
EN

Stack Overflow用户
提问于 2011-05-30 22:03:32
回答 1查看 12.5K关注 0票数 2

我从web服务收到一个soap信封,其中包含客户数据,如姓名和地址等。地址中不包含城市/郊区,而是邮政编码。我有所有的城市和郊区与他们的CSV文件中的邮政编码,所以我想插入每个邮政编码的正确名称。我可以将其存储在数据库或其他地方,但这更多的是关于如何在传递数据之前插入节点。

代码如下:

代码语言:javascript
复制
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(searchResponse);

XmlNamespaceManager nsmgr = new XmlNamespaceManager(xDoc.NameTable);
nsmgr.AddNamespace("ns", wsNamespace);

XmlNodeList postCodeNodes = xDoc.SelectNodes("//ns:postcode", nsmgr);
string applicationPath = AppDomain.CurrentDomain.BaseDirectory;

foreach (XmlNode node in postCodeNodes)
{ 
    using (StreamReader readFile = new StreamReader(applicationPath + "postcodes.csv"))
    {
        string line;
        string[] row;

        while ((line = readFile.ReadLine()) != null)
        {
                row = line.Split(',');
                if (row[0].ToString() == node.InnerText)
                {
                    string suburb = row[1].ToString();
                    //XmlNode ndSuburb = xDoc.CreateElement("suburb");
                    //ndSuburb.Value = suburb;
                    //node.ParentNode.AppendChild(ndSuburb);
                    break;
                }
        }
    }
}

在我注释掉代码的地方,我不知道该怎么做。有什么建议吗?关于如何使其更有效率的技巧也将不胜感激。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-30 22:16:12

如果不实际看到现有的XML结构和所需的新XML结构,就很难知道这一点。基本上,我假设您需要一个新的XML节点,该节点包含与postcode元素相同级别的郊区。

在这种情况下,我使用了:

代码语言:javascript
复制
XmlElement elem = xDoc.CreateElement("suburb");
elem.InnerText = ...;
node.ParentNode.AppendChild(elem);

编辑

至于效率:为什么不只读一次“邮政编码文件”,将条目添加到包含邮政编码作为关键字、郊区作为值的字典中?这比每次读取文件要快得多。

代码语言:javascript
复制
Dictionary<string, string> postCodeMap = new Dictionary<string, string>();
string[] lines = File.ReadAllLines(...);
foreach (string line in lines)
{
   string[] parts = line.Split(',');
   postCodeMap[parts[0]] = parts[1];
}

然后再执行以下操作:

代码语言:javascript
复制
foreach (XmlNode node in postCodeNodes)
{ 
    string suburb = postCodeMap[node.InnerText];

    XmlElement elem = xDoc.CreateElement("suburb");
    elem.InnerText = suburb;
    node.ParentNode.AppendChild(elem);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6177292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档