使用C#编辑XML文档
发布时间:2020-12-15 21:52:51 所属栏目:百科 来源:网络整理
导读:我一直在努力解决如何将元素添加到我的 XML文档中的问题, 我想将热点信息添加到Id正确的xml中(所以id = 2添加热点信息)这是我当前的XML – Pages Page Id1/Id TitleTEST/Title ContentUrlImagestestimg.png/ContentUrl Hotspots Hotspot X140/X Y202/Y Shap
我一直在努力解决如何将元素添加到我的
XML文档中的问题,
我想将热点信息添加到Id正确的xml中(所以id = 2添加热点信息)这是我当前的XML – <Pages> <Page> <Id>1</Id> <Title>TEST</Title> <ContentUrl>Imagestestimg.png</ContentUrl> <Hotspots> <Hotspot> <X>140</X> <Y>202</Y> <Shape>Circle</Shape> <TargetId>2</TargetId> </Hotspot> </Hotspots> <ParentId>0</ParentId> </Page> <Page> <Id>2</Id> <Title>TEST2</Title> <ContentUrl>Imagestestimg2.jpg</ContentUrl> <Hotspots> </Hotspots> <ParentId>1</ParentId> </Page> </Pages> 我想要更新xml所以它显示这样的东西 – <Pages> <Page> <Id>1</Id> <Title>TEST</Title> <ContentUrl>Imagestestimg.png</ContentUrl> <Hotspots> <Hotspot> <X>140</X> <Y>202</Y> <Shape>Circle</Shape> <TargetId>2</TargetId> </Hotspot> </Hotspots> <ParentId>0</ParentId> </Page> <Page> <Id>2</Id> <Title>TEST2</Title> <ContentUrl>Imagestestimg2.jpg</ContentUrl> <Hotspots> <Hotspot> <X>140</X> <Y>202</Y> <Shape>Circle</Shape> <TargetId>2</TargetId> </Hotspot> </Hotspots> <ParentId>1</ParentId> </Page> 我到目前为止的代码是 – XDocument Xdoc = XDocument.Load(@"Test.xml"); Xdoc.Root.Element("Pages").Elements("Page").Where(Page => Page.Value.Substring(0,Page.Value.IndexOf("-"))==CurrentPage.Id.ToString()) .FirstOrDefault() .Add(new XElement("Hotspot",new XElement("X",x),new XElement("Y",y),new XElement("Shape","Circle"),new XElement("TargetId",nNodeID) )); Xdoc.Save(@"Test.xml"); (CurrentPage.Id是我希望与XML文档匹配的id,用于在哪里添加Hotspot – Page.Value.IndexOf(“ – ”)返回xml中页面的Id) 但这只是在页面底部添加代码,所以我需要找到一种方法将其添加到正确的Id所在的XML的Hotspots部分. 任何帮助将不胜感激,如果有更好的方法来做我正在尝试的东西,请告诉我,我以前从未在我的代码中实际使用过XML文档,并且最近才开始学习c#(在过去一个月内). 谢谢. 解决方法
选择您需要的页面
XDocument xdoc = XDocument.Load("Test.xml"); int pageId = 2; var page = xdoc.Descendants("Page") .FirstOrDefault(p => (int)p.Element("Id") == pageId); 然后将内容添加到此页面元素(如果有): if (page != null) { // add to Hotspots element page.Element("Hotspots") .Add(new XElement("Hotspot",nNodeID))); xdoc.Save("Test.xml"); } 您的代码将新的Hotspot元素添加到页面,而不是将内容添加到现有的Hotspots元素. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |