簡體   English   中英

如何使用linq C#讀取復雜的XML

[英]How to read complex XML using linq C#

我想讀取一個xml文件...當它是簡單xml時,它可以完美地工作,但是當它是復雜xml時,則不起作用。 例如:

簡單的XML:

<?xml version="1.0" encoding="utf-8" ?>
<FILE>
  <CLIENTS>
    <CLIENT>
      <NAME>William</NAME>
      <AGE>25</AGE>
    </CLIENT>

    <CLIENT>
      <NAME>John</NAME>
      <AGE>31</AGE>
    </CLIENT>
  </CLIENTS>
</FILE>

C#:

XDocument document = XDocument.Load(path);
var clientNodes = from clt in document.Descendants("CLIENTS") select clt;
//This works and "clientNodes" has values for clients node

但是,當我想加載更復雜的xml時,來自文件的查詢為空

復雜的XML:

<?xml version="1.0" encoding="UTF-8"?>

<SII:RESPONSE xmlns:SII="http://www.sii.cl/XMLSchema">

<SII:RESPONSE_STATUS>
    <SII:STATE>1</SII:STATE>
</SII:RESPONSE_STATUS>
<SII:RESPONSE_CONTENT>
    <CREATED_BY>
        <ID>233</ID>
        <NAME>Sophy</NAME>
    </CREATED_BY>
    <CLIENT>
        <NAME>William</NAME>
        <AGE>25</AGE>
    </CLIENT>
    <CLIENT>
        <NAME>John</NAME>
        <AGE>25</AGE>
    </CLIENT>
</SII:RESPONSE_CONTENT>

C#:

XDocument documentoXML = XDocument.Load(path);
var simpleNodes = from clt in document.Descendants(XName.Get("SII", "RESPONSE_CONTENT")) select clt;

//這不起作用,“ simpleNodes”沒有值:(

請幫助!

這應該是

XName.Get("RESPONSE_CONTENT", "http://www.sii.cl/XMLSchema")

或更簡單:

XNamespace sii = "http://www.sii.cl/XMLSchema";

接着

document.Descendants(sii + "RESPONSE_CONTENT")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM