使用XDocument类更新XML元素内容 [英] Updating XML elements content usign XDocument class

查看:63
本文介绍了使用XDocument类更新XML元素内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,
创建文档后,我正在使用XDocument类更新值:

 XDocument doc2 = XDocument.Parse( @" );





所以我需要更新经度"元素的内容,以便使用;

 doc2.Element(" ).Element(" ).Value = "  XXXXX"; 



我现在得到异常对象引用未设置为对象的实例"
我知道到达经度"元素存在问题,那么使我能够执行此操作的方法是什么,因为我尝试了很多次并进行了很多搜索..

非常感谢.

解决方案

尝试一下:

 使用 System.Xml.Linq;
使用 System.Xml;
使用 System.Xml.XPath;

XDocument doc2 = XDocument.Parse( @"  http: www.opengis.net/kml/2.2" xmlns: gx ="http://www.google.com/kml/ext/2.2" xmlns:kml ="http://www.opengis.net/kml/2.2" xmlns:atom ="http://www.w3 .org/2005/Atom> 
                <地标>
< name> Test </ 名称 > 
< lookat>
<经度> 11111111111 </ 经度 > 
< latitude> 1111111111111 </  latitude  > 
< altitude> 500 </ 海拔高度 > 
< range> 500 </  range  > 
< tilt> </ 倾斜 > 
< heading> 11111111 </ 标题 > 
< altitudemode> relativeToGround </  altitudemode  > 
</ 外观 > 
< styleurl>#msn_ylw-pushpin70 </  styleurl   > 
< point>
< coordinates> 111111111, 1111111111  </ 坐标 > 
</  > 
              </ 地标 > 
        </  kml  >  "  x  ," http: www.opengis.net/kml/2.2"); 

 var 经度= doc2.XPathSelectElement(" ,xnm);
//  var经度= doc2.XPathSelectElement("/x:kml/x:地标/x:LookAt/x:经度,xnm);这也有效!
longitude.Value = " ; 


Hi all,
I''m using the XDocument class to update the value after creating the document:

        XDocument doc2 = XDocument.Parse(@"
    <kml xmlns='http://www.opengis.net/kml/2.2' xmlns:gx='http://www.google.com/kml/ext/2.2' xmlns:kml='http://www.opengis.net/kml/2.2' xmlns:atom='http://www.w3.org/2005/Atom'>
        <Placemark>
             <name>Test</name>
             <LookAt>
            <longitude>11111111111</longitude>
            <latitude>1111111111111</latitude>
            <altitude>500</altitude>
            <range>500</range>
            <tilt></tilt>
            <heading>11111111</heading>
            <altitudeMode>relativeToGround</altitudeMode>
           </LookAt>
          <styleUrl>#msn_ylw-pushpin70</styleUrl>
          <Point>
            <coordinates>111111111,1111111111</coordinates>
          </Point>
      </Placemark>
</kml>");





So I need to update the "longitude" element content so I used;

doc2.Element("kml").Element("longitude").Value = "XXXXX";



I get now the exception "Object reference not set to an instance of an object"
I know that there is a problem reaching the "longitude" element so what is the method which enables me to do it, because I tried many times and searched a lot..

Many thanks.

解决方案

Try this :

using System.Xml.Linq;
using System.Xml;
using System.Xml.XPath;

XDocument doc2 = XDocument.Parse(@"
    		<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
                <placemark>
		             <name>Test</name>
			         <lookat>
				    <longitude>11111111111</longitude>
				    <latitude>1111111111111</latitude>
				    <altitude>500</altitude>
				    <range>500</range>
				    <tilt></tilt>
				    <heading>11111111</heading>
				    <altitudemode>relativeToGround</altitudemode>
			       </lookat>
			      <styleurl>#msn_ylw-pushpin70</styleurl>
			      <point>
				    <coordinates>111111111,1111111111</coordinates>
			      </point>
              </placemark>
        </kml>");

XmlNamespaceManager xnm = new XmlNamespaceManager(new NameTable()); 
xnm.AddNamespace("x", "http://www.opengis.net/kml/2.2");

var longitude = doc2.XPathSelectElement("//x:longitude", xnm);
//var longitude = doc2.XPathSelectElement("/x:kml/x:Placemark/x:LookAt/x:longitude", xnm); this also works!
longitude.Value = "XXXXX";


这篇关于使用XDocument类更新XML元素内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆