【问题标题】:Extracting the particular part of an XML提取 XML 的特定部分
【发布时间】:2012-12-24 07:54:41
【问题描述】:

我在一个字符串变量中有一个 XML,我想检查这个 xml 内容是否包含

<xml>
<message display='yes'>
....

<xml>
<xdp:xdp>
...

有可能吗?

【问题讨论】:

  • 是的,有可能。你能展示你为读取 XML 所做的代码吗?
  • 您应该发布您尝试过的内容或您的解决方法。这不是“为我编写代码网站”。正如 ryadavilli 所说,是的。
  • 我用 substirng 试过了
  • 发布你的代码,子字符串是你应该使用的最后一件事

标签: c# .net xml xml-parsing


【解决方案1】:

检查方法如下:

        string example = @"<xml>
            <message display='yes'></message>
            </xml>";

        XDocument doc = XDocument.Parse(example);
        if (doc.Element("xml").Element("message") != null)
        {
            // node "message" exists within node "xml" which is located at the root of the document
        }

您可以使用XDocument 类来检查XML 文档层次结构中任何位置是否存在任何节点。您可以轻松地从字符串或文件中加载内容。

【讨论】:

    【解决方案2】:

    以下示例

    <Order>
      <AmazonOrderID>000-1111111-2222222</AmazonOrderID>
      <MerchantOrderID>111-3333333-4444444</MerchantOrderID>
      <PurchaseDate>2012-03-02T13:28:53+00:00</PurchaseDate>
      <LastUpdatedDate>2012-03-02T13:29:05+00:00</LastUpdatedDate>
      <OrderStatus>Pending</OrderStatus>
      <SalesChannel>Amazon.com</SalesChannel>
      <URL>http://www.amazon.com</URL>
      <FulfillmentData>
        <FulfillmentChannel>Amazon</FulfillmentChannel>
        <ShipServiceLevel>Standard</ShipServiceLevel>
        <Address>
          <City>Beverly Hills</City>
          <State>CA</State>
          <PostalCode>90210-1234</PostalCode>
          <Country>US</Country>
        </Address>
      </FulfillmentData>
      <OrderItem>
        <ASIN>AmazonASIN </ASIN>
        <SKU> Internal-SKU</SKU>
        <ItemStatus>Pending</ItemStatus>
        <ProductName> This is the name of the product </ProductName>
        <Quantity>1</Quantity>
        <ItemPrice>
          <Component>
            <Type>Principal</Type>
            <Amount currency="USD">19.99</Amount>
          </Component>
        </ItemPrice>
      </OrderItem>
    </Order>
    
        List<string> getNodes(string path, string nodeName) {
    
        List<string> nodes = new List<string>(); 
    
        XDocument xmlDoc = XDocument.Load(path); //Create the XML document type
    
        foreach (var el in xmlDoc.Descendants(nodeName)) {
                //for debugging
                //nodes.Add(el.Name + " " + el.Value);
    
                //for production
                nodes.Add(el.Value);
        }
       return nodes;
    } //end getNodes
    
    List<string> skuNodes = xml.getNodes(@"AmazonSalesOrders.xml", "SKU");
    

    【讨论】:

      猜你喜欢
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      • 2017-06-26
      • 2023-03-15
      • 2017-11-15
      • 1970-01-01
      相关资源
      最近更新 更多