[英]"Data at the root level is invalid. Line 1, position 1" When Parsing XML
[英]C# XML Parsing - Data at the root level is invalid. Line 1, position 1
我正在嘗試解析以下 XML:
<connector_attribute_validation>
<use_ssl>
<required>1</required>
<type>1</type>
</use_ssl>
<size>
<required>1</required>
<type>1</type>
</size>
</connector_attribute_validation>
我的代碼如下:
public static Dictionary<string, Dictionary<string, string>> ValidateConnectorAttributes(string xmlString)
{
try
{
Dictionary<string, Dictionary<string, string>> validation = new Dictionary<string, Dictionary<string, string>>();
XElement root = XElement.Parse(xmlString);
foreach (XElement attribute in root.Elements())
{
Dictionary<string, string> attributeInfo = new Dictionary<string, string>();
foreach (XElement attributeInformation in attribute.Elements())
{
attributeInfo.Add(attributeInformation.Name.LocalName, attributeInformation.Value);
}
validation.Add(attribute.Name.LocalName, attributeInfo);
}
foreach (KeyValuePair<string, Dictionary<string, string>> Attribute in validation)
{
Console.WriteLine(Attribute.Key + " : ");
foreach (KeyValuePair<string, string> AttributeValues in Attribute.Value)
{
Console.WriteLine(AttributeValues.Key + " : " + AttributeValues.Value);
}
Console.WriteLine("=========");
}
return validation;
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
return null;
}
}
我收到錯誤:根級別的數據無效。 第 1 行,位置 1。
我在這里做錯了什么? 我的目標是將 XML 轉換為字典中的字典。 所以我正在尋找類似的東西:
<use_ssl, <required, 1> <type, 1>>
我試圖解析的確切 XML 如下:
<connector_attributes_validations>
<use_ssl>
<required>0</required>
<type>string</type>
<default></default>
<valid_values>Yes|No</valid_values>
</use_ssl>
<page_size>
<required>1</required>
<type>int</type>
<default>500</default>
<valid_values></valid_values>
</page_size>
<retry_count>
<required>1</required>
<type>int</type>
<default>3</default>
<valid_values></valid_values>
</retry_count>
<query_timeout>
<required>1</required>
<type>int</type>
<default>600</default>
<valid_values></valid_values>
</query_timeout>
<domain_name>
<required>1</required>
<type>string</type>
<default></default>
<valid_values></valid_values>
</domain_name>
<ad_account_searchbase>
<required>0</required>
<type>string</type>
<default></default>
<valid_values></valid_values>
</ad_account_searchbase>
<ad_account_searchfilter>
<required>1</required>
<type>string</type>
<default></default>
<valid_values></valid_values>
</ad_account_searchfilter>
<ad_group_searchbase>
<required>0</required>
<type>string</type>
<default></default>
<valid_values></valid_values>
</ad_group_searchbase>
<ad_group_searchfilter>
<required>0</required>
<type>string</type>
<default></default>
<valid_values></valid_values>
</ad_group_searchfilter>
</connector_attributes_validations>
我添加了一個縮短的版本,因為兩者都不適合我,我不明白為什么。 同樣的錯誤:根級別的數據無效。
他是另一種方法:
XDocument doc = XDocument.Load(fFILENAME);
Dictionary<string, Dictionary<string,string>> dict = doc.Root
.Elements()
.GroupBy(x => x.Name.LocalName, y => y.Elements()
.GroupBy(a => a.Name.LocalName, b => (string)b)
.ToDictionary(a => a.Key, b => b.FirstOrDefault()))
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.