标签: xml-validation

可以在运行时使用代码对xsd验证xml吗?

我有运行时读入的xml文件,是否可以在运行时针对xsd文件验证xml?使用c#

c# xml schema xsd xml-validation

11
推荐指数
2
解决办法
1万
查看次数

验证失败:"EntityRef:expecting';'"

嗨,我有一些不会验证的XML.我把这个问题缩小到了这个范围:

<script type="text/javascript">document.getelementbyid("oxm-1f4a4485-5a1d-45f9-a989-9c65a0b9ceb6").src="http://bid.website.net/display?l=h4siaaaaaaaaad2nmq6cqbrenycw7qjyolfccxmregvcoae0u0sly_agtvaewwn4bg_havwbnebpvmzkkzra_kzzdvoloq4u-hjnp7sii0rxcbzz5vl5kxsrds6wtsfbxmcr9chysuhqbecuckb8cvx4m-pbcxugtdrll6d3dqtihnqukth2yvdkptr67cuzfvlxjlinkul9634lpal_h4mwhso8aabzhw1cdcwjxl6xivgv8agrjxjc_gaaaa==&p=h4siaaaaaaaaabxkmq7cmaxaurcqjjrrsfqqsrm7x3fsrwyvosda8qnj_3ojfgb49o45pblq7e80syzjhopggso9wyzpcpntzkxk1ldtbbi7otmxfj9da1wpjcf10vtxdj9e5_utyj19k2lfssepld5agnqaaaa=&url=http%3a%2f%2flocalhost%2fproject-debug%2fproject.html";</script>
Run Code Online (Sandbox Code Playgroud)

我把它放在一个XML验证器中,它吐出来:

此页面包含以下错误:第16行第1行的错误:EntityRef:expecting';'

任何关于失踪';'的想法 应该去?还有其他问题吗?

xml validation xml-validation character-reference

11
推荐指数
1
解决办法
3万
查看次数

命名空间"xSchema"中的元素"x"在命名空间"xSchema"中具有无效的子元素"y".预期可能元素列表:"y"

我正在为我的XML验证最终编写一个模式,并最终得到了所有(几乎)工作.但现在我在XML中遇到了最奇怪的错误.我将首先展示我的架构,因为问题应该在哪里,但它没有给我任何错误.

<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:os="OrdersSchema"
        targetNamespace="OrdersSchema"
        elementFormDefault="unqualified"
        attributeFormDefault="qualified">
  <element name="orders"    type="os:orders"/>
  <complexType name="orders">
    <sequence>
      <element name="order" type="os:order" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <complexType name="order">
    <sequence>
      <element name="deliveryAddress">
        <complexType>
          <sequence>
            <element name='line1' type='os:lineType'/>
            <element name='line2' type='os:lineType'/>
            <element name='line3' type='os:lineType'/>
            <element name='line4' type='os:lineType' minOccurs='0'/>
          </sequence>
          <attribute name="orderId" type="string" use="required" >
          </attribute>
          <attribute name="type" type="os:typeType" use="required"/>
        </complexType>
        <unique name="uniqueOrderIdPerOrder">
          <selector xpath="os:order"/>
          <field xpath="orderId"/>
        </unique>
      </element>
      <element name='items'>
        <complexType>
          <attribute name='productId' type='os:productIdType'/>
          <attribute name='quantity'>
            <simpleType>
              <restriction base='positiveInteger'>
              </restriction>
            </simpleType>
          </attribute>
        </complexType>
      </element>
      <element name='note' minOccurs='0' …
Run Code Online (Sandbox Code Playgroud)

xml namespaces xml-validation

11
推荐指数
2
解决办法
2万
查看次数

使用.NET根据模式验证XML

我想测试(true或false)任意XML文件是否与给定模式匹配.

对于它的价值,架构是Word 2003 WordML架构,Microsoft使用大约7个*.xsd文件的列表定义.

其中一个文件还包括W3C xml.xsd文件,包括以下语句:

<xsd:import id="xml" namespace="http://www.w3.org/XML/1998/namespace"
    schemaLocation="http://www.w3.org/2001/xml.xsd"></xsd:import>
Run Code Online (Sandbox Code Playgroud)

我使用如下的.NET代码进行验证:

   public static void validate(string filename)
    {
       XmlReaderSettings settings = new XmlReaderSettings();
       settings.Schemas.Add(
           "http://schemas.microsoft.com/office/word/2003/wordml",
           //to get this file I downloaded "Office 2003: XML Reference Schemas", i.e. "Office2003XMLSchema.exe" 
           @"C:\Program Files\Microsoft Office 2003 Developer Resources\Microsoft Office 2003 XML Reference Schemas\WordprocessingML Schemas\wordnet.xsd"
           );
        settings.ValidationType = ValidationType.Schema;
        settings.ValidationEventHandler += new ValidationEventHandler(validationEventHandler);
        XmlReader xmlReader = XmlReader.Create(filename, settings);
        while (xmlReader.Read()) { }
   }
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我在未连接到互联网的机器上运行此代码,那么我会收到一个XmlSchemaValidationException无法找到的错误xml.xsd.

为了解决这个问题,我下载了一份xml.xsd,并使用该settings.Schemas.Add方法显式添加:当机器未连接到互联网时,验证现在可以正常工作.

但是,当机器连接到互联网时,我现在得到一个错误说The …

.net xml xsd xml-validation

10
推荐指数
1
解决办法
5479
查看次数

针对XML Schema(XSD)验证JSON

是否可以在Java中验证JSON和XSD?我有一个应用程序,我收到JSON响应,我想对现有的XSD进行验证.我的应用程序的另一部分使用XML,这就是为什么如果它们都可以对现有的XSD进行验证最简单的原因.

java xml json xsd xml-validation

10
推荐指数
1
解决办法
2万
查看次数

验证使用jaxb针对xsd文件创建的xml

我有一个使用jaxb创建的xml文件.我需要针对xsd文档验证它.是否可以在没有解组的情况下进行验证.然后我需要在xml文件中打印错误.

jaxb xml-validation jaxb2

9
推荐指数
1
解决办法
9979
查看次数

XSD:默认整数值范围

在XSD文件中定义特定数据类型的元素时是否存在隐含的默认值范围?例如,如果我定义一个integer类型的元素:

<xs:element name="MyIntegerElement" type="xs:integer"/>
Run Code Online (Sandbox Code Playgroud)

这是否具有它将验证的隐含最小值和最大值?我知道我可以明确定义有效范围,如下所示:

<xs:element name="MyIntegerElement">
   <xs:simpleType>
      <xs:restriction base="xs:integer">
         <xs:minInclusive value="1"/>
         <xs:maxInclusive value="16"/>
      </xs:restriction>
   </xs:simpleType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

但是如果我在针对此验证XML文件时不这样做,它会默认为一系列有效值吗?我一直在挖掘XSD文档但尚未找到答案.

xml xsd xml-validation

9
推荐指数
1
解决办法
3万
查看次数

如何用php验证xml

我已经为我的网站提出了基于xml的api请求.

但有时候,有些客户发给我一个无效的xml,我想回复一个好的回复.

我该如何验证xml?

编辑:

好吧,我想我提出了错误的问题,我想验证节点,如果某些节点丢失,那么我会返回最佳响应.

我曾经用php验证这一点,我必须检查每个节点.但这种方式很难修改.

这是我的xml示例:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<mashhadhost>
    <create>
        <name>example.ir</name>
        <period>60</period>
        <ns>
            <hostAttr>
                <hostName>ns1.example.ir</hostName>
                <hostAddr ip="v4">192.0.2.2</hostAddr>
            </hostAttr>
        </ns>
        <contact type="holder">ex61-irnic</contact>
        <contact type="admin">ex61-irnic</contact>
        <contact type="tech">ex61-irnic</contact>
        <contact type="bill">ex61-irnic</contact>
    </create>
    <auth>
        <code>TOKEN</code>
    </auth>
</mashhadhost>
Run Code Online (Sandbox Code Playgroud)

php xml xml-validation

9
推荐指数
2
解决办法
2万
查看次数

如何使用PHP加速XML DTD验证?

我用我在本地的DTD文件来验证我的XML.

为此,我正在做:

$xml                = $dmsMerrin.'/xml/'.$id.'/conversion.xml';
$dtd                = $dmsMerrin.'/style_files/journalpublishing.dtd';

$dom = new DOMDocument();
@$dom->load($xml);

libxml_use_internal_errors(true);

if (@$dom->validate()) {
    $htmlDTDError .= "<h2>No Errors Found - The tested file is Valid !</h2>";
} 
else {
    $errors = libxml_get_errors();
    $htmlDTDError .= '<h2>Errors Found ('.count($errors).')</h2><ol>';

    foreach ($errors as $error) {
        $htmlDTDError .= '<li>'.$error->message.' on line '.$error->line. '</li>';
    }

    $htmlDTDError .= '</ol>';
    libxml_clear_errors();
}

libxml_use_internal_errors(false);
Run Code Online (Sandbox Code Playgroud)

对于1600行的XML,这需要大约30秒.

这是平时吗?我认为应该快得多吗?

如您所见,我使用的DTD是本地服务器上的.

任何的想法?谢谢.

编辑:通过调试和检查执行时间,我注意到如果我的xml有1600行或150行,它需要相同的时间,所以问题不是xml大小.

php xml dtd xml-validation

9
推荐指数
1
解决办法
222
查看次数

XML验证错误:未声明元素

我正在.NET中构建一个Web服务,它将通过XML来回传递数据.我想使用我定义的XSD验证传入请求中的XML.

这是XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:complexType name="POSearch">
       <xs:sequence minOccurs="0" maxOccurs="10">
           <xs:element name="POID" type="xs:positiveInteger"/>
       </xs:sequence>
   </xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

这是XML:

<POSearch>
   <POID>1</POID>
   <POID>2</POID>
</POSearch>
Run Code Online (Sandbox Code Playgroud)

这是C#中的验证代码:

static void Main(string[] args){
   XmlSchemaSet iSchemas = new XmlSchemaSet();
   iSchemas.Add(string.Empty, @"...xsd file location");

   XmlReaderSettings settings = new XmlReaderSettings();
   settings.ValidationType = ValidationType.Schema;
   settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
   settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
   settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
   settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
   settings.Schemas.Add(iSchemas);

   XmlReader reader = XmlReader.Create(@"...xml file location", settings);

   try {
      while(reader.Read())
       ;
   }
   catch(Exception ex) {
      Console.WriteLine(ex.Message);
   }
}

private static void …
Run Code Online (Sandbox Code Playgroud)

c# xml xsd xml-validation

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

xml-validation ×10

xml ×9

xsd ×5

c# ×2

php ×2

.net ×1

character-reference ×1

dtd ×1

java ×1

jaxb ×1

jaxb2 ×1

json ×1

namespaces ×1

schema ×1

validation ×1