Tôi nhận 'xsi' là tiền tố không khai báo sử dụng XmlDocument.'xsi' là tiền tố không khai báo sử dụng XmlDocument
Tôi cố gắng để đọc một tập tin trong đó có các sơ đồ sau:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
xmlns:gx="http://www.google.com/kml/ext/2.2"
xmlns:kml="http://www.opengis.net/kml/2.2"
xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<Document id="robert" xsi:schemaLocation="http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd http://www.google.com/kml/ext/2.2 http://code.google.com/apis/kml/schema/kml22gx.xsd">
<Placemark>
<description>test</description>
</Placemark>
</Document>
</Document>
</kml>
Tôi đã thử những điều sau đây:
XmlDocument xmldoc = new XmlDocument();
using (XmlTextReader tr = new XmlTextReader(strXmlFile))
{
//tr.Namespaces = false; (uncomment to ignore namespace)
xmldoc.Load(tr); // 'xsi' is an undeclared prefix error here
}
Nếu tôi bỏ ghi chú dòng để bỏ qua không gian tên, nó tải ok nhưng không lưu được XmlDocument
sau này. Vì vậy, bỏ qua nó sẽ không phải là một giải pháp. Có ai biết làm thế nào để tải đúng lược đồ? Vấn đề/lỗi dường như là trong nút này:
<Document id="robert" xsi:schemaLocation="http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd http://www.google.com/kml/ext/2.2 http://code.google.com/apis/kml/schema/kml22gx.xsd">
Update # 1 tôi thử như sau:
XmlDocument xmldoc = new XmlDocument();
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
XmlReaderSettings xset = new XmlReaderSettings();
xset.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader rd = XmlReader.Create(new StringReader(strXmlFile), xset, context);
xmldoc.Load(rd); // error is still on this line
Nhưng đang nhận lỗi này ngay bây giờ:
"Các quy định không thể chèn nút dưới dạng con hợp lệ của nút này, bởi vì nút được chỉ định là loại sai. " Dường như tôi đang tiến gần hơn ...
Cảm ơn bạn đã phản hồi nhanh chóng. Một câu hỏi, làm thế nào bạn sẽ làm điều đó trước khi xmldoc.load (trong mã nguồn) vì tôi không thể thay đổi bản thân tập tin gốc. Cảm ơn một lần nữa. – user3062349
Nếu tệp thiếu tệp, thì tệp đó là tệp xml không hợp lệ (bạn không thể sử dụng không gian tên không khai báo) và cần được sửa. Từ đâu bạn nhận được những tệp này –
Tệp là tệp KML google earth hợp lệ ở định dạng XML. Nó mở ra một cách chính xác trong Google Earth. – user3062349