c#导入XML文件字符错误
本文关键字:字符 错误 文件 XML 导入 | 更新日期: 2023-09-27 18:06:34
我想查询一个pdb文件(XML格式),并将相关信息存储在另一个XML文件中。我看过一些教程,并设法在更简单的文件中完成它。
XML文件如下所示:http://www.rcsb.org/pdb/files/1L2Y.xml
我想在一个简单的条件下存储原子坐标(和一些其他信息),属性值PDBx:auth_atom_id等于"N","CA"或"C"。
XDocument xmlDocument = XDocument.Load (@"...'ProjectC#'Molecule_00'PDBLibary_00'Data'1L2Y.xml");
XDocument result = new XDocument (
new XElement ("Molecule",
new XElement ("Atom",
from s in xmlDocument.Descendants ("PDBx:atom_site")
where s.Attribute ("PDBx:auth_atom_id").Value == "N" // s.Attribute ("PDBx:auth_atom_id").Value == "CA" || s.Attribute ("PDBx:auth_atom_id").Value == "C"
select new XElement ("Atom",
new XElement ("AtMolType", s.Element ("PDBx:auth_atom_id").Value),
new XElement ("CoordX", s.Element ("PDBx:Cartn_x").Value),
new XElement ("CoordY", s.Element ("PDBx:Cartn_y").Value),
new XElement ("CoordZ", s.Element ("PDBx:Cartn_z").Value)))));
result.Save(@"...'PDBLibary_00'Data'_1L2Y.xml");
当我运行脚本时,它返回一个System.XML.XMLException(字符":"不能使用)。但是XML文件就是这样构造的。我试图改变XML文件中的字符,但没有成功。
您误解了这样一个元素的含义:
<PDBx:atom_siteCategory>
这是一个本地名称为atom_siteCategory
的元素,在名称空间中,URI为"http://pdbml.pdb.org/schema/pdbx-v40.xsd"
,如前所述:
xmlns:PDBx="http://pdbml.pdb.org/schema/pdbx-v40.xsd"
LINQ to XML有很好的命名空间支持,所以你可以使用:
XNamespace pdbx = "http://pdbml.pdb.org/schema/pdbx-v40.xsd";
则在查询中使用:
new XElement("AtMolType", s.Element(pdbx + "auth_atom_id").Value),
new XElement("CoordX", s.Element(pdbx + "Cartn_x").Value),
new XElement("CoordY", s.Element(pdbx + "Cartn_y").Value),
new XElement("CoordZ", s.Element(pdbx + "Cartn_z").Value)))));
(同样适用于Descendants
等)