将 Xml API 字符串转换为 JSON 字符串 UWP



我通过RapidApi使用了勺子Api。使用 get 请求,我到达了 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);
}

我使用 Unirest-API 库 for RapidApi e Newtonsoft.Json 库来序列化 Xml。

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

提前谢谢。

您的 XML 字符串有问题。

使用此工具返回此 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 字符串是否对该工具有效。

最新更新