嗨我想控制一个xml文件...为此我使用linq to xml。
private string GetGroup(string xml, string id)
{
XDocument document;
XElement element;
try
{
document = XDocument.Load(xml);
//element = document.Root.Elements("Permissiongroup").FirstOrDefault(e => e.Element("id").Value == id);
element = document.Elements("Permissiongroup").FirstOrDefault(e => e.Element("id").Value == id);
if (element != null)
{
return element.Element("display").Value;
}
else
{
return string.Empty;
}
}
catch (Exception)
{
return null;
}
finally
{
document = null;
element = null;
}
}
这是我的xml:
<?xml version="1.0" encoding="iso-8859-1"?>
<Permissiongroup>
<Permission id="Hessen" display="KV-IT" />
<Permission id="Berlin" display="DBG_Update" />
</Permissiongroup>
例如我想要的方法是..
string group = GetGroup(xmlpath, "Hessen");
小组是&#34; KV-IT&#34;
答案 0 :(得分:2)
您目前拥有的内容存在一些问题 - 您错过了查询的权限并查找了元素而不是属性。以下工作,虽然我会将其拆分以检查元素是否存在(例如,确保存在Permission元素等),而不是依赖于错误处理。
// string group = GetGroup(xmlpath, "Hessen"); // returns KV-IT
// string group2 = GetGroup(xmlpath, "Berlin"); //DBG_Update
private string GetGroup(string xml, string id)
{
XDocument document;
XElement element;
try
{
document = XDocument.Load(xml);
element = document.Elements("Permissiongroup").Elements(("Permission")).FirstOrDefault(t => t.Attribute("id").Value == id);
if (element != null)
{
return element.Attribute("display").Value;
}
else
{
return string.Empty;
}
}
catch (Exception ex)
{
return null;
}
finally
{
document = null;
element = null;
}
}
答案 1 :(得分:1)
使用方法Attribute()而不是使用Element()来访问属性
private string GetGroup(string xml, string id)
{
XDocument document;
XElement element;
try
{
document = XDocument.Load(xml);
//element = document.Root.Elements("Permissiongroup").FirstOrDefault(e => e.Attribute("id").Value == id);
element = document.Elements("Permissiongroup").FirstOrDefault(e => e.Attribute("id").Value == id);
if (element != null)
{
return element.Attribute("display").Value;
}
else
{
return string.Empty;
}
}
catch (Exception)
{
return null;
}
finally
{
document = null;
element = null;
}
}
答案 2 :(得分:1)
您可以编写xml结构,然后使用可以将xml转换为xsd http://www.freeformatter.com/xsd-generator.html#ad-output
一旦有了xsd文件,就可以下载jaxb,它会将xsd文件转换为POJO文件
然后在你的程序中,你可以像这样访问xml的属性
JAXBContext jc2 = JAXBContext.newInstance(someclassname.class);
File xml2 = new File(xml_File);
Unmarshaller unmarshaller2 = jc2.createUnmarshaller();
someclassnameObject= (someclassname) unmarshaller2.unmarshal(xml2);
并且可以使用object来使用它的属性,例如someclassnameObject.attribute