<?xml version="1.0" ?>
<!DOCTYPE ANS SYSTEM "LOCANS.DTD">
<ANS VER="0.01">
<LCSCLIENTID>TheClient</LCSCLIENTID>
<ORID>13308469176</ORID>
<LIA>
<POSINFOS>
<POSINFO>
<POSITIONRESULT>1</POSITIONRESULT>
<MSID>13308469176</MSID>
<MSID_TYPE>0</MSID_TYPE>
<AREACODE>25</AREACODE>
<LOCALTIME>20020420142020</LOCALTIME>
<LATITUDETYPE>0</LATITUDETYPE>
<LATITUDE>4540300</LATITUDE>
<LONGITUDETYPE>0</LONGITUDETYPE>
<LONGITUDE>12035700</LONGITUDE>
<RADUIS>200</RADUIS>
</POSINFO>
<POSINFO>
<POSITIONRESULT>1</POSITIONRESULT>
<MSID>13308469176</MSID>
<MSID_TYPE>0</MSID_TYPE>
<AREACODE>25</AREACODE>
<LOCALTIME>20020420142020</LOCALTIME>
<LATITUDETYPE>0</LATITUDETYPE>
<LATITUDE>4540300</LATITUDE>///需要取值
<LONGITUDETYPE>0</LONGITUDETYPE>
<LONGITUDE>12035700</LONGITUDE>>需要取值
<RADUIS>200</RADUIS>
</POSINFO>
</POSINFOS>
</LIA>
</ANS>请问怎么在xml中取得特定节点的值,比如上面所表示的值,特别是下面二个子节点<POSINFO>
没有区分标志

解决方案 »

  1.   

    TO:请问怎么在xml中取得特定节点的值,比如上面所表示的值,特别是下面二个子节点<POSINFO>
    没有区分标志既然没有区分标志,那取哪个不一样吗?
      

  2.   

    如果说你已经知道是第二个POSINFO结点,也是可以的..try..            XmlDocument doc = new XmlDocument();
                doc.Load(@"../../test.xml");
                XmlNodeList nodes = doc.SelectNodes(@"//POSINFO");
                //比如说你已知道是第二个POSINFO
                foreach (XmlNode node in nodes[1].ChildNodes)
                {
                    if (node.Name == "LATITUDE" || node.Name == "LONGITUDE")
                        Console.WriteLine("NodeName: " + node.Name + "\tNodeValue: " + node.InnerText);
                }输出:
    NodeName: LATITUDE NodeValue: 4540300
    NodeName: LONGITUDE NodeValue: 12035700
      

  3.   

    don't forget :using System.Xml;
      

  4.   

    未能找到文件“E:\netProject\testxml\LOCANS.DTD”。 
    XmlDocument doc = new XmlDocument();
    doc.Load("E:\\netProject\\testxml\\L1.xml");
    XmlNodeList nodes = doc.SelectNodes(@"//POSINFO");
    //比如说你已知道是第二个POSINFO
    foreach (XmlNode node in nodes[1].ChildNodes)
    {
    if (node.Name == "LATITUDE" || node.Name == "LONGITUDE")
    Console.WriteLine("NodeName: " + node.Name + "\tNodeValue: " + node.InnerText);
    }why??
      

  5.   

    FileNotFoundException: 未能找到文件“E:\netProject\testxml\LOCANS.DTD”。]
       System.IO.__Error.WinIOError(Int32 errorCode, String str) +181
       System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath, Boolean bFromProxy) +888
       System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) +45
       System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials) +73
       System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn) +55
       System.Xml.Schema.DtdParser.ParseDocTypeDecl()
       System.Xml.Schema.DtdParser.Parse()
       System.Xml.XmlTextReader.ParseDtd(XmlScanner scanner)
       System.Xml.XmlTextReader.ParseTag() +1379
       System.Xml.XmlTextReader.ParseRoot() +234
       System.Xml.XmlTextReader.Read() +127
       System.Xml.XmlValidatingReader.ReadWithCollectTextToken() +146
       System.Xml.XmlValidatingReader.Read() +26
       System.Xml.XmlLoader.LoadCurrentNode() +157
       System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc) +49
       System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace) +102
       System.Xml.XmlDocument.Load(XmlReader reader) +72
       System.Xml.XmlDocument.Load(String filename) +78
       testxml.WebForm1.Button6_Click(Object sender, EventArgs e) in e:\netproject\testxml\webform1.aspx.cs:184
       System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       System.Web.UI.Page.ProcessRequestMain()
      

  6.   

    因为你缺少LOCANS.DTD文件 ...
      

  7.   

    DTD文件相当于Xml文件的模板,XML文件中的元素、元素的属性、元素的排列方式/顺序、元素能够包含的内容等,都必须符合DTD中的定义。两种解决方法:第一:将<!DOCTYPE ANS SYSTEM "LOCANS.DTD">这句去掉...第二:在和你的xml文件,即L1.xml文件同样的目录下,新建一个DTD文件,命名为LOCANS.DTD即可,空文件就行...(新建一个文件,重命名为"LOCANS.DTD",就OK了..)
      

  8.   

    go to have a try...
      

  9.   

    <?xml version = "1.0" ?>
    <!DOCTYPE ANS SYSTEM "LOCANS.DTD">   ////必须去掉这行才行,否则报错FileNotFoundException: 未能找到文件“E:\netProject\testxml\LOCANS.DTD”。]
    <ANS VER="0.01">
    <LCSCLIENTID>TheClient</LCSCLIENTID>
    <ORID>13308469176</ORID>
    <LIA>
    <POSINFOS>
       <POSINFO>
    <POSITIONRESULT>1</ POSITIONRESULT>
    <MSID>13308469176</MSID>
    <MSID_TYPE>0</MSID_TYPE>
    <AREACODE>25</AREACODE>
    <LOCALTIME>20020420142020</LOCALTIME
    <LATITUDETYPE>0</LATITUDETYPE>
    <LATITUDE>4540300</LATITUDE>
    <LONGITUDETYPE>0</ LONGITUDETYPE>
    <LONGITUDE>12035700</LONGITUDE>
    <RADUIS>200</RADUIS>
    </POSINFO><POSINFO>
    <POSITIONRESULT>1</ POSITIONRESULT >
    <MSID>13308469176</MSID>
    <MSID_TYPE>0</MSID_TYPE>
    <AREACODE>25</AREACODE>
    <LOCALTIME>20020420142020</LOCALTIME>
    <LATITUDETYPE>0</LATITUDETYPE>
    <LATITUDE>4540300</LATITUDE>
    <LONGITUDETYPE>0</ LONGITUDETYPE>
    <LONGITUDE>12035700</LONGITUDE>
    <RADUIS>200</RADUIS>
       </POSINFO>
    <POSINFOS>
    </LIA>
    </ANS>
      

  10.   

    是的,上面我已经解释过了...我在用的时候是将那句去掉了,没想到你也没有那个文件...要么你去掉那句,要么新建一个DTD文件,内容为空都可以,但必须得有...