首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用xmlReader

使用xmlReader
EN

Stack Overflow用户
提问于 2012-09-26 22:06:40
回答 2查看 328关注 0票数 0

我正在尝试读取一个xml字符串,然后通过插入另一个xml字符串来修改它,我不知道怎么做,我一直在努力,因为我是这个领域的初学者。我在网上搜索,我真的搞混了xmlWriter和xmlReader,因为我不想用xmlDocument,我在微软http://msdn.microsoft.com/en-us/library/cc189056(v=vs.95).aspx上找到了这个

所以我的代码是这样的

代码语言:javascript
运行
复制
 String Mainxmltext = "<ClosedKPICalls>" +
    "<ServiceInfo>  <ServiceNo>HR011</ServiceNo> <ServiceName>Petty cash</ServiceName>    "+
    "<RecCount>0</RecCount>  <RegdKPI>2</RegdKPI>  </ServiceInfo> </ClosedKPICalls>";

    String xmlinnerText = "<TaskDetails> <name>Jhone</name> <Description>just for testing</Description> </TaskDetails>";

    StringBuilder output = new StringBuilder();
    using (XmlReader reader = XmlReader.Create(new StringReader(Mainxmltext)))
    {
        XmlWriterSettings ws = new XmlWriterSettings();
        ws.Indent = true;
        using (XmlWriter writer = XmlWriter.Create(output, ws))
        {

            // Parse the file and display each of the nodes.
            while (reader.Read())
            {
                switch (reader.NodeType)
                {

                    case XmlNodeType.Element:
                        writer.WriteStartElement(reader.Name);                           
                        break;
                    case XmlNodeType.Text:
                        writer.WriteString(reader.Value);

                        break;
                    case XmlNodeType.XmlDeclaration:
                    case XmlNodeType.ProcessingInstruction:
                        writer.WriteProcessingInstruction(reader.Name, reader.Value);
                        break;
                    case XmlNodeType.Comment:
                        writer.WriteComment(reader.Value);
                        break;
                    case XmlNodeType.EndElement:
                        writer.WriteFullEndElement();                           
                        break;
                }
            }
        }
    }


    MessageBox.Show(output.ToString());

}

现在我已经成功地读取了第一个字符串,如何在前面的主xml结束标记之前插入第二个测试,我的xml应该如下所示

代码语言:javascript
运行
复制
<ClosedKPICalls>
<ServiceInfo>  
<ServiceNo>HR011</ServiceNo> 
<ServiceName>Petty cash</ServiceName>  
<RecCount>0</RecCount>  
<RegdKPI>2</RegdKPI>  
</ServiceInfo>
<TaskDetails> 
<name>Jhone</name> 
<Description>just for testing</Description> 
</TaskDetails>
</ClosedKPICalls>

请帮帮忙谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-26 22:13:32

Linq2Xml更易于使用。

代码语言:javascript
运行
复制
String Mainxmltext = "<ClosedKPICalls>" +
        "<ServiceInfo>  <ServiceNo>HR011</ServiceNo> <ServiceName>Petty cash</ServiceName>    " +
        "<RecCount>0</RecCount>  <RegdKPI>2</RegdKPI>  </ServiceInfo> </ClosedKPICalls>";

String xmlinnerText = "<TaskDetails> <name>Jhone</name> <Description>just for testing</Description> </TaskDetails>";

XDocument xDoc = XDocument.Parse(Mainxmltext);
xDoc.Root.Add(XElement.Parse(xmlinnerText));
var newxml = xDoc.ToString();

这就是获得所需xml的全部内容

票数 1
EN

Stack Overflow用户

发布于 2012-09-26 22:14:02

您所要实现的就是将一段xml插入到xml字符串中,您可以使用XElement类来实现这一点。

对于ex。

代码语言:javascript
运行
复制
var xmlString = "<person></person>";

var xEl = XElement.Parse(xmlString);

xEl.Add(XElement.Parse("<name>vijay</name>"));

Console.Writeline(XEl);

O/P

代码语言:javascript
运行
复制
<person><name>vijay</name></person>

谷歌搜索XElement

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12603589

复制
相关文章

相似问题

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