我有这个代码,当用户点击按钮时,它应该将XML文件的属性加载到字符串变量中:
public void Button1_Click(object sender, EventArgs e)
{
XDocument doc = XDocument.Load("C:/Structure.xml");
Visit(doc.Root);
}
public static void Visit(XElement element)
{
string siteURL1 = element.Attribute("URL").Value;
string siteTitle1 = element.Attribute("siteTitle").Value;
string siteDescription1 = element.Attribute("siteDescription").Value;
string siteTemplate = element.Attribute("siteTemplate").Value;
string name = element.Attribute("type").Value;
Execute(name, siteURL1, siteTitle1, siteDescription1, siteTemplate);
}
但是当我部署webpart并单击按钮时,我得到“NullreferenceException未被用户代码/对象引用未设置为对象实例的错误”错误。于:
string siteURL1 = element.Attribute("URL").Value;"
知道我可能做错了什么?
这就是结构看起来像这样:
<root>
<level1 name="level1A"
type="Private"
template="3
siteTitle="Private"
siteDescription="Private Site"
URL"private">
<level2 name="level2A">
<level3 name="level3A">
<level4 name="level4A">
<level5 name="level5A">
<level6 name="level6A">
<level7 name="level7A">
<level8 name="level8A"></level8>
</level7>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
</root>
答案 0 :(得分:2)
element.Attribute("URL")
为空。您需要检查数据(XML)以查看原因。您的代码假定某个结构似乎不正确。仔细查看传入的元素。
答案 1 :(得分:1)
我认为错误的两件事之一......
object
element
为null
或
attribute
element
网址不存在
尝试类似......
var url = element.Attribute("URL");
string siteURL1;
if(url != null)
{
siteURL1 = url.Value;
}
答案 2 :(得分:0)
进行一些验证,确保doc
后XDocument doc = XDocument.Load("C:/Structure.xml");
不为空。部署后,您是否可以访问该位置的XML文件?
答案 3 :(得分:0)
还有一些其他问题可能是错误的,这里有一个快速列表:
运行调试并查看您传递给Visit方法的元素。