【问题标题】:Convert Xml Api string to Json string UWP将 Xml Api 字符串转换为 Json 字符串 UWP
【发布时间】:2019-10-29 08:09:11
【问题描述】:

我通过 RapidApi 使用了勺子 Api。使用获取请求,我到达了 xml 响应字符串。但是当在 xmlDocument 中加载 xml 字符串时,会返回一个错误(我试图纠正该错误,但显示了其他错误)。

MainPaige.xaml.cs:

private void BtnConvertToJson_Click(object sender, RoutedEventArgs e)
{
    HttpResponse<string> response = Unirest.get("https://spoonacular-recipe-food-nutrition-v1.p.rapidapi.com/food/products/176011/nutritionWidget")
    .header("X-RapidAPI-Host", "spoonacular-recipe-food-nutrition-v1.p.rapidapi.com")
    .header("X-RapidAPI-Key", "f98d566ba1mshd91ae3d16b704c1p183143jsn04deadcdc19b")
    .header("Accept", "text/html")
    .asString();


    XmlDocument doc = new XmlDocument();
    string XamlString = "<div itemprop=\"nutrition\" itemscope itemtype=\"http://schema.org/NutritionInformation\"><div class=\"spoonacular-caption\">Quickview</div><div class=\"spoonacular-quickview\" itemprop=\"calories\">352 Calories</div><div class=\"spoonacular-quickview\" itemprop=\"proteinContent\">48g Protein</div><div class=\"spoonacular-quickview\" itemprop=\"fatContent\">15g Total Fat</div><div class=\"spoonacular-quickview\" itemprop=\"carbohydrateContent\">0.0g Carbs</div></div><div class=\"spoonacular-caption spoonacular-salmon\">Limit These</div><div class=\"spoonacular-nutrient-name\">Calories</div><div class=\"spoonacular-nutrient-value\">352</div><div style=\"display:inline-block;width: -moz-calc(100% - 189px);width: -webkit-calc(100% - 189px);width: -o-calc(100% - 189px);width: calc(100% - 189px);\"><div class=\"spoonacular-nutrition-visualization-bar spoonacular-salmon\" style=\"width:17.6%\" onmouseover=\"spoonacularShowNutritionComposition(event,'ENERGY')\" onmouseout=\"spoonacularHideNutritionComposition('ENERGY')\"></div><div class=\"spoonacular-nutrition-visualization-bar-number spoonacular-salmon\">18%</div></div><br><div class=\"spoonacular-nutrient-name\">Fat</div><div class=\"spoonacular-nutrient-value\">15g</div><div style=\"display:inline-block;width: -moz-calc(100% - 189px);width: -webkit-calc(100% - 189px);width: -o-calc(100% - 189px);width: calc(100% - 189px);\"><div class=\"spoonacular-nutrition-visualization-bar spoonacular-salmon\" style=\"width:24.22%\" onmouseover=\"spoonacularShowNutritionComposition(event,'FAT')\" onmouseout=\"spoonacularHideNutritionComposition('FAT')\"></div><div class=\"spoonacular-nutrition-visualization-bar-number spoonacular-salmon\">24%</div></div><br><div class=\"spoonacular-nutrient-name\">&nbsp;&nbsp;Saturated Fat</div><div class=\"spoonacular-nutrient-value\">5g</div><div style=\"display:inline-block;width: -moz-calc(100% - 189px);width: -webkit-calc(100% - 189px);width: -o-calc(100% - 189px);width: calc(100% - 189px);\"><div class=\"spoonacular-nutrition-visualization-bar spoonacular-salmon\" style=\"width:34.73%\" onmouseover=\"spoonacularShowNutritionComposition(event,'FAT_SATURATED')\" onmouseout=\"spoonacularHideNutritionComposition('FAT_SATURATED')\"></div><div class=\"spoonacular-nutrition-visualization-bar-number spoonacular-salmon\">35%</div></div><br><div class=\"spoonacular-nutrient-name\">&nbsp;&nbsp;Trans Fat</div><div class=\"spoonacular-nutrient-value\">0.14g</div><div style=\"display:inline-block;width: -moz-calc(100% - 189px);width: -webkit-calc(100% - 189px);width: -o-calc(100% - 189px);width: calc(100% - 189px);\"><div class=\"spoonacular-nutrition-visualization-bar spoonacular-salmon\" style=\"width:100.0%\" onmouseover=\"spoonacularShowNutritionComposition(event,'FAT_TRANS')\" onmouseout=\"spoonacularHideNutritionComposition('FAT_TRANS')\"></div><div class=\"spoonacular-nutrition-visualization-bar-number spoonacular-salmon\">100%</div></div><br><div class=\"spoonacular-nutrient-name\">Carbohydrates</div><div class=\"spoonacular-nutrient-value\">0.0g</div><div style=\"display:inline-block;width: -moz-calc(100% - 189px);width: -webkit-calc(100% - 189px);width: -o-calc(100% - 189px);width: calc(100% - 189px);\"><div class=\"spoonacular-nutrition-visualization-bar spoonacular-salmon\" style=\"width:0.0%\" onmouseover=\"spoonacularShowNutritionComposition(event,'CARBOHYDRATES')\" onmouseout=\"spoonacularHideNutritionComposition('CARBOHYDRATES')\"></div><div class=\"spoonacular-nutrition-visualization-bar-number spoonacular-salmon\">0%</div></div><br><div class=\"spoonacular-nutrient-name\">&nbsp;&nbsp;Sugar</div><div class=\"spoonacular-nutrient-value\">0.0g</div><div style=\"display:inline-block;width: -moz-calc(100% - 189px);width: -webkit-calc(100% - 189px);width: -o-calc(100% - 189px);width: calc(100% - 189px);\"><div class=\"spoonacular-nutrition-visualization-bar spoonacular-salmon\" style=\"width:0.0%\" onmouseover=\"spoonacularShowNutritionComposition(event,'SUGAR')\" onmouseout=\"spoonacularHideNutritionComposition('SUGAR')\"></div><div class=\"spoonacular-nutrition-visualization-bar-number spoonacular-salmon\">0%</div></div><br><div class=\"spoonacular-nutrient-name\">Cholesterol</div><div class=\"spoonacular-nutrient-value\">152mg</div><div style=\"display:inline-block;width: -moz-calc(100% - 189px);width: -webkit-calc(100% - 189px);width: -o-calc(100% - 189px);width: calc(100% - 189px);\"><div class=\"spoonacular-nutrition-visualization-bar spoonacular-salmon\" style=\"width:50.67%\" onmouseover=\"spoonacularShowNutritionComposition(event,'CHOLESTEROL')\" onmouseout=\"spoonacularHideNutritionComposition('CHOLESTEROL')\"></div><div class=\"spoonacular-nutrition-visualization-bar-number spoonacular-salmon\">51%</div></div><br><div class=\"spoonacular-nutrient-name\">Sodium</div><div class=\"spoonacular-nutrient-value\">109mg</div><div style=\"display:inline-block;width: -moz-calc(100% - 189px);width: -webkit-calc(100% - 189px);width: -o-calc(100% - 189px);width: calc(100% - 189px);\"><div class=\"spoonacular-nutrition-visualization-bar spoonacular-salmon\" style=\"width:4.74%\" onmouseover=\"spoonacularShowNutritionComposition(event,'SODIUM')\" onmouseout=\"spoonacularHideNutritionComposition('SODIUM')\"></div><div class=\"spoonacular-nutrition-visualization-bar-number spoonacular-salmon\">5%</div></div><br><div class=\"spoonacular-caption spoonacular-blue\">Get Enough Of These</div><div class=\"spoonacular-nutrient-name\">Protein</div><div class=\"spoonacular-nutrient-value\">48g</div><div style=\"display:inline-block;width: -moz-calc(100% - 189px);width: -webkit-calc(100% - 189px);width: -o-calc(100% - 189px);width: calc(100% - 189px);\"><div class=\"spoonacular-nutrition-visualization-bar spoonacular-blue\" style=\"width:97.76%\" onmouseover=\"spoonacularShowNutritionComposition(event,'PROTEIN')\" onmouseout=\"spoonacularHideNutritionComposition('PROTEIN')\"></div><div class=\"spoonacular-nutrition-visualization-bar-number spoonacular-blue\">98%</div></div><br><div class=\"spoonacular-nutrient-name\">Potassium</div><div class=\"spoonacular-nutrient-value\">846mg</div><div style=\"display:inline-block;width: -moz-calc(100% - 189px);width: -webkit-calc(100% - 189px);width: -o-calc(100% - 189px);width: calc(100% - 189px);\"><div class=\"spoonacular-nutrition-visualization-bar spoonacular-blue\" style=\"width:24.17%\" onmouseover=\"spoonacularShowNutritionComposition(event,'POTASSIUM')\" onmouseout=\"spoonacularHideNutritionComposition('POTASSIUM')\"></div><div class=\"spoonacular-nutrition-visualization-bar-number spoonacular-blue\">24%</div></div><br><div style=\"margin-top:12px;width:12px;height:12px\" class=\"spoonacular-nutrition-visualization-bar spoonacular-salmon\"></div><div style=\"margin-left:6px;margin-right:6px;width:12px;height:12px\" class=\"spoonacular-nutrition-visualization-bar spoonacular-blue\"></div>covered percent of daily need";

    // doc.LoadXml(response.Body); // Here is the error (The first is : itemtype' is an unexpected token. The expected token is '='. Line 1, position 37)
    doc.LoadXml(XamlString);

    string jsonText = JsonConvert.SerializeXmlNode(doc);
}

我使用 RapidApi 的 Unirest-APINewtonsoft.Json 库来序列化 Xml。

我必须得到一个有效的 Json 字符串。 API 的请求有问题吗?

提前致谢。

【问题讨论】:

  • 看看this answer 来回答一个非常相似的问题。您的字段中是否也有类似的空格?
  • 另外,您能否提供一份从请求返回的实际响应的副本,以便我们查看响应格式可能出现的问题?
  • 我用API返回的字符串更新了。
  • html是响应吗?

标签: c# json api xaml uwp


【解决方案1】:

您的 XML 字符串有问题。

使用 this tool 返回这个 Json:

{
  "html": {
    "body": {
      "parsererror": {
        "-style": "display: block; white-space: pre; border: 2px solid #c77; padding: 0 1em 0 1em; margin: 1em; background-color: #fdd; color: black",
        "h3": [
          "This page contains the following errors:",
          "Below is a rendering of the page up to the first error."
        ],
        "div": {
          "-style": "font-family:monospace;font-size:12px",
          "#text": "error on line 1 at column 15: AttValue: \" or ' expected
"
        }
      }
    }
  }
}

因此,在将其硬编码到代码中之前,请检查您的 xml 字符串是否使用该工具有效。

【讨论】:

    猜你喜欢
    • 2012-10-26
    • 2016-03-17
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多